void getPluginModuleInformation(const PluginModuleInfo& plugin, ImmutableDictionary::MapType& map) { #if ENABLE(NETSCAPE_PLUGIN_API) map.set(pluginInformationPathKey(), WebString::create(plugin.path)); map.set(pluginInformationDisplayNameKey(), WebString::create(plugin.info.name)); map.set(pluginInformationDefaultLoadPolicyKey(), WebUInt64::create(toWKPluginLoadPolicy(PluginInfoStore::defaultLoadPolicyForPlugin(plugin)))); getPlatformPluginModuleInformation(plugin, map); #endif }
PassRefPtr<ImmutableDictionary> createPluginInformationDictionary(const String& mimeType, const String& frameURLString, const String& pageURLString) { ImmutableDictionary::MapType map; if (!frameURLString.isEmpty()) map.set(pluginInformationFrameURLKey(), API::URL::create(frameURLString)); if (!mimeType.isEmpty()) map.set(pluginInformationMIMETypeKey(), API::String::create(mimeType)); if (!pageURLString.isEmpty()) map.set(pluginInformationPageURLKey(), API::URL::create(pageURLString)); return ImmutableDictionary::create(std::move(map)); }
PassRefPtr<ImmutableDictionary> createPlugInInformationDictionary(const PluginModuleInfo& plugInModuleInfo, bool pageContainsNonPlayingInstanceOfPlugIn) { ImmutableDictionary::MapType map; getPluginModuleInformation(plugInModuleInfo, map); map.set(plugInInformationPageContainsNonPlayingInstanceOfPlugInKey(), WebBoolean::create(pageContainsNonPlayingInstanceOfPlugIn)); return ImmutableDictionary::adopt(map); }
PassRefPtr<ImmutableDictionary> PlugInAutoStartProvider::autoStartOriginsTableCopy() const { ImmutableDictionary::MapType map; AutoStartTable::const_iterator end = m_autoStartTable.end(); double now = currentTime(); for (AutoStartTable::const_iterator it = m_autoStartTable.begin(); it != end; ++it) { ImmutableDictionary::MapType hashMap; PlugInAutoStartOriginHash::const_iterator valueEnd = it->value.end(); for (PlugInAutoStartOriginHash::const_iterator valueIt = it->value.begin(); valueIt != valueEnd; ++valueIt) { if (now > valueIt->value) continue; hashMap.set(String::number(valueIt->key), WebDouble::create(valueIt->value)); } if (hashMap.size()) map.set(it->key, ImmutableDictionary::adopt(hashMap)); } return ImmutableDictionary::adopt(map); }
void WebContext::pluginInfoStoreDidLoadPlugins(PluginInfoStore* store) { #ifdef NDEBUG UNUSED_PARAM(store); #endif ASSERT(store == &m_pluginInfoStore); Vector<PluginModuleInfo> pluginModules = m_pluginInfoStore.plugins(); Vector<RefPtr<API::Object>> plugins; plugins.reserveInitialCapacity(pluginModules.size()); for (const auto& pluginModule : pluginModules) { ImmutableDictionary::MapType map; map.set(ASCIILiteral("path"), API::String::create(pluginModule.path)); map.set(ASCIILiteral("name"), API::String::create(pluginModule.info.name)); map.set(ASCIILiteral("file"), API::String::create(pluginModule.info.file)); map.set(ASCIILiteral("desc"), API::String::create(pluginModule.info.desc)); Vector<RefPtr<API::Object>> mimeTypes; mimeTypes.reserveInitialCapacity(pluginModule.info.mimes.size()); for (const auto& mimeClassInfo : pluginModule.info.mimes) mimeTypes.uncheckedAppend(API::String::create(mimeClassInfo.type)); map.set(ASCIILiteral("mimes"), API::Array::create(std::move(mimeTypes))); #if PLATFORM(COCOA) map.set(ASCIILiteral("bundleId"), API::String::create(pluginModule.bundleIdentifier)); map.set(ASCIILiteral("version"), API::String::create(pluginModule.versionString)); #endif plugins.uncheckedAppend(ImmutableDictionary::create(std::move(map))); } m_client.plugInInformationBecameAvailable(this, API::Array::create(std::move(plugins)).get()); }
bool WebFormClient::willSubmitForm(WebPageProxy* page, WebFrameProxy* frame, WebFrameProxy* sourceFrame, const Vector<std::pair<String, String>>& textFieldValues, API::Object* userData, WebFormSubmissionListenerProxy* listener) { if (!m_client.willSubmitForm) return false; ImmutableDictionary::MapType map; for (size_t i = 0; i < textFieldValues.size(); ++i) map.set(textFieldValues[i].first, WebString::create(textFieldValues[i].second)); RefPtr<ImmutableDictionary> textFieldsMap = ImmutableDictionary::adopt(map); m_client.willSubmitForm(toAPI(page), toAPI(frame), toAPI(sourceFrame), toAPI(textFieldsMap.get()), toAPI(userData), toAPI(listener), m_client.clientInfo); return true; }
void InjectedBundlePageFormClient::willSendSubmitEvent(WebPage* page, HTMLFormElement* formElement, WebFrame* frame, WebFrame* sourceFrame, const Vector<std::pair<String, String>>& values) { if (!m_client.willSendSubmitEvent) return; RefPtr<InjectedBundleNodeHandle> nodeHandle = InjectedBundleNodeHandle::getOrCreate(formElement); ImmutableDictionary::MapType map; for (size_t i = 0; i < values.size(); ++i) map.set(values[i].first, API::String::create(values[i].second)); auto textFieldsMap = ImmutableDictionary::create(std::move(map)); m_client.willSendSubmitEvent(toAPI(page), toAPI(nodeHandle.get()), toAPI(frame), toAPI(sourceFrame), toAPI(textFieldsMap.get()), m_client.base.clientInfo); }
void InjectedBundlePageFormClient::willSubmitForm(WebPage* page, HTMLFormElement* formElement, WebFrame* frame, WebFrame* sourceFrame, const Vector<std::pair<String, String>>& values, RefPtr<API::Object>& userData) { if (!m_client.willSubmitForm) return; RefPtr<InjectedBundleNodeHandle> nodeHandle = InjectedBundleNodeHandle::getOrCreate(formElement); ImmutableDictionary::MapType map; for (size_t i = 0; i < values.size(); ++i) map.set(values[i].first, WebString::create(values[i].second)); RefPtr<ImmutableDictionary> textFieldsMap = ImmutableDictionary::adopt(map); WKTypeRef userDataToPass = 0; m_client.willSubmitForm(toAPI(page), toAPI(nodeHandle.get()), toAPI(frame), toAPI(sourceFrame), toAPI(textFieldsMap.get()), &userDataToPass, m_client.clientInfo); userData = adoptRef(toImpl(userDataToPass)); }
PassRefPtr<ImmutableDictionary> createPluginInformationDictionary(const PluginModuleInfo& plugin, const String& frameURLString, const String& mimeType, const String& pageURLString, const String& pluginspageAttributeURLString, const String& pluginURLString, bool replacementObscured) { ImmutableDictionary::MapType map; getPluginModuleInformation(plugin, map); if (!frameURLString.isEmpty()) map.set(pluginInformationFrameURLKey(), API::URL::create(frameURLString)); if (!mimeType.isEmpty()) map.set(pluginInformationMIMETypeKey(), API::String::create(mimeType)); if (!pageURLString.isEmpty()) map.set(pluginInformationPageURLKey(), API::URL::create(pageURLString)); if (!pluginspageAttributeURLString.isEmpty()) map.set(pluginInformationPluginspageAttributeURLKey(), API::URL::create(pluginspageAttributeURLString)); if (!pluginURLString.isEmpty()) map.set(pluginInformationPluginURLKey(), API::URL::create(pluginURLString)); map.set(plugInInformationReplacementObscuredKey(), API::Boolean::create(replacementObscured)); return ImmutableDictionary::create(std::move(map)); }
PassRefPtr<WebPageProxy> WebUIClient::createNewPage(WebPageProxy* page, const WindowFeatures& windowFeatures, WebEvent::Modifiers modifiers, WebMouseEvent::Button button) { if (!m_client.createNewPage) return 0; ImmutableDictionary::MapType map; if (windowFeatures.xSet) map.set("x", WebDouble::create(windowFeatures.x)); if (windowFeatures.ySet) map.set("y", WebDouble::create(windowFeatures.y)); if (windowFeatures.widthSet) map.set("width", WebDouble::create(windowFeatures.width)); if (windowFeatures.heightSet) map.set("height", WebDouble::create(windowFeatures.height)); map.set("menuBarVisible", WebBoolean::create(windowFeatures.menuBarVisible)); map.set("statusBarVisible", WebBoolean::create(windowFeatures.statusBarVisible)); map.set("toolBarVisible", WebBoolean::create(windowFeatures.toolBarVisible)); map.set("scrollbarsVisible", WebBoolean::create(windowFeatures.scrollbarsVisible)); map.set("resizable", WebBoolean::create(windowFeatures.resizable)); map.set("fullscreen", WebBoolean::create(windowFeatures.fullscreen)); map.set("dialog", WebBoolean::create(windowFeatures.dialog)); RefPtr<ImmutableDictionary> featuresMap = ImmutableDictionary::adopt(map); return adoptRef(toImpl(m_client.createNewPage(toAPI(page), toAPI(featuresMap.get()), toAPI(modifiers), toAPI(button), m_client.clientInfo))); }
PassRefPtr<WebPageProxy> WebUIClient::createNewPage(WebPageProxy* page, const ResourceRequest& resourceRequest, const WindowFeatures& windowFeatures, WebEvent::Modifiers modifiers, WebMouseEvent::Button button) { if (!m_client.version && !m_client.createNewPage_deprecatedForUseWithV0) return 0; if (m_client.version == kWKPageUIClientCurrentVersion && !m_client.createNewPage) return 0; ImmutableDictionary::MapType map; if (windowFeatures.xSet) map.set("x", WebDouble::create(windowFeatures.x)); if (windowFeatures.ySet) map.set("y", WebDouble::create(windowFeatures.y)); if (windowFeatures.widthSet) map.set("width", WebDouble::create(windowFeatures.width)); if (windowFeatures.heightSet) map.set("height", WebDouble::create(windowFeatures.height)); map.set("menuBarVisible", WebBoolean::create(windowFeatures.menuBarVisible)); map.set("statusBarVisible", WebBoolean::create(windowFeatures.statusBarVisible)); map.set("toolBarVisible", WebBoolean::create(windowFeatures.toolBarVisible)); map.set("locationBarVisible", WebBoolean::create(windowFeatures.locationBarVisible)); map.set("scrollbarsVisible", WebBoolean::create(windowFeatures.scrollbarsVisible)); map.set("resizable", WebBoolean::create(windowFeatures.resizable)); map.set("fullscreen", WebBoolean::create(windowFeatures.fullscreen)); map.set("dialog", WebBoolean::create(windowFeatures.dialog)); RefPtr<ImmutableDictionary> featuresMap = ImmutableDictionary::adopt(map); if (!m_client.version) return adoptRef(toImpl(m_client.createNewPage_deprecatedForUseWithV0(toAPI(page), toAPI(featuresMap.get()), toAPI(modifiers), toAPI(button), m_client.clientInfo))); RefPtr<WebURLRequest> request = WebURLRequest::create(resourceRequest); return adoptRef(toImpl(m_client.createNewPage(toAPI(page), toAPI(request.get()), toAPI(featuresMap.get()), toAPI(modifiers), toAPI(button), m_client.clientInfo))); }