void WebChromeClient::mouseDidMoveOverElement(const HitTestResult& hitTestResult, unsigned modifierFlags) { RefPtr<APIObject> userData; // Notify the bundle client. m_page->injectedBundleUIClient().mouseDidMoveOverElement(m_page, hitTestResult, static_cast<WebEvent::Modifiers>(modifierFlags), userData); // Notify the UIProcess. m_page->send(Messages::WebPageProxy::MouseDidMoveOverElement(modifierFlags, InjectedBundleUserMessageEncoder(userData.get()))); }
void InjectedBundle::postSynchronousMessage(const String& messageName, APIObject* messageBody, RefPtr<APIObject>& returnData) { RefPtr<APIObject> returnDataTmp; InjectedBundleUserMessageDecoder messageDecoder(returnDataTmp); bool succeeded = WebProcess::shared().connection()->sendSync(WebContextMessage::PostSynchronousMessage, 0, CoreIPC::In(messageName, InjectedBundleUserMessageEncoder(messageBody)), CoreIPC::Out(messageDecoder), CoreIPC::Connection::NoTimeout); if (!succeeded) return; returnData = returnDataTmp; }
void InjectedBundle::postMessage(const String& messageName, APIObject* messageBody) { WebProcess::shared().connection()->send(WebContextLegacyMessage::PostMessage, 0, CoreIPC::In(messageName, InjectedBundleUserMessageEncoder(messageBody))); }
void WebContextMenu::show() { ContextMenuController* controller = m_page->corePage()->contextMenuController(); if (!controller) return; ContextMenu* menu = controller->contextMenu(); if (!menu) return; Node* node = controller->hitTestResult().innerNonSharedNode(); if (!node) return; Frame* frame = node->document()->frame(); if (!frame) return; FrameView* view = frame->view(); if (!view) return; // Give the bundle client a chance to process the menu. #if USE(CROSS_PLATFORM_CONTEXT_MENUS) const Vector<ContextMenuItem>& coreItems = menu->items(); #else Vector<ContextMenuItem> coreItems = contextMenuItemVector(menu->platformDescription()); #endif Vector<WebContextMenuItemData> proposedMenu = kitItems(coreItems, menu); Vector<WebContextMenuItemData> newMenu; RefPtr<APIObject> userData; RefPtr<InjectedBundleHitTestResult> hitTestResult = InjectedBundleHitTestResult::create(controller->hitTestResult()); if (m_page->injectedBundleContextMenuClient().getCustomMenuFromDefaultItems(m_page, hitTestResult.get(), proposedMenu, newMenu, userData)) proposedMenu = newMenu; ContextMenuState contextMenuState; contextMenuState.absoluteImageURLString = controller->hitTestResult().absoluteImageURL().string(); contextMenuState.absoluteLinkURLString = controller->hitTestResult().absoluteLinkURL().string(); // Notify the UIProcess. m_page->send(Messages::WebPageProxy::ShowContextMenu(view->contentsToWindow(controller->hitTestResult().point()), contextMenuState, proposedMenu, InjectedBundleUserMessageEncoder(userData.get()))); }
void WebFrameLoaderClient::dispatchWillSubmitForm(FramePolicyFunction function, PassRefPtr<FormState> prpFormState) { WebPage* webPage = m_frame->page(); if (!webPage) return; // FIXME: Pass more of the form state. RefPtr<FormState> formState = prpFormState; HTMLFormElement* form = formState->form(); WebFrame* sourceFrame = static_cast<WebFrameLoaderClient*>(formState->sourceFrame()->loader()->client())->webFrame(); const Vector<std::pair<String, String> >& values = formState->textFieldValues(); RefPtr<APIObject> userData; webPage->injectedBundleFormClient().willSubmitForm(webPage, form, m_frame, sourceFrame, values, userData); uint64_t listenerID = m_frame->setUpPolicyListener(function); WebProcess::shared().connection()->send(WebPageProxyMessage::WillSubmitForm, webPage->pageID(), CoreIPC::In(m_frame->frameID(), sourceFrame->frameID(), values, listenerID, InjectedBundleUserMessageEncoder(userData.get()))); }
void WebConnectionToUIProcess::encodeMessageBody(CoreIPC::ArgumentEncoder* argumentEncoder, APIObject* messageBody) { argumentEncoder->encode(InjectedBundleUserMessageEncoder(messageBody)); }
void WebConnectionToUIProcess::encodeMessageBody(CoreIPC::ArgumentEncoder& encoder, API::Object* messageBody) { encoder << InjectedBundleUserMessageEncoder(messageBody); }
void WebContextMenu::show() { ContextMenuController& controller = m_page->corePage()->contextMenuController(); Frame* frame = controller.hitTestResult().innerNodeFrame(); if (!frame) return; FrameView* view = frame->view(); if (!view) return; Vector<WebContextMenuItemData> menuItems; RefPtr<API::Object> userData; menuItemsWithUserData(menuItems, userData); ContextMenuContextData contextMenuContextData(controller.context()); // Mark the WebPage has having a shown context menu then notify the UIProcess. m_page->contextMenuShowing(); m_page->send(Messages::WebPageProxy::ShowContextMenu(view->contentsToWindow(controller.hitTestResult().roundedPointInInnerNodeFrame()), contextMenuContextData, menuItems, InjectedBundleUserMessageEncoder(userData.get()))); }