Changeset 149904 in webkit
- Timestamp:
- May 10, 2013 1:46:12 PM (11 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 5 added
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r149903 r149904 1 2013-05-09 Sam Weinig <sam@webkit.org> 2 3 Unify plug-in information dictionaries 4 <rdar://problem/13852080> 5 https://bugs.webkit.org/show_bug.cgi?id=115891 6 7 Reviewed by Anders Carlsson. 8 9 This unifies the plug-in information dictionaries vended by WKContextCopyPlugInInfoForBundleIdentifier 10 and WKContextGetInfoForInstalledPlugIns with those from the WKPageLoaderClient and WKPageUIClient. 11 12 All the old keys will continue to work, but have been deprecated in favor of new keys defined in 13 WKPluginInformation.h 14 15 * Shared/API/c/WKPluginInformation.cpp: Added. 16 * Shared/API/c/WKPluginInformation.h: Added. 17 Export new keys as SPI. 18 19 * Shared/Plugins/Netscape/PluginInformation.h: Added. 20 * Shared/Plugins/Netscape/PluginInformation.cpp: Added. 21 (WebKit::pluginInformationBundleIdentifierKey): 22 (WebKit::pluginInformationBundleVersionKey): 23 (WebKit::pluginInformationPathKey): 24 (WebKit::pluginInformationDisplayNameKey): 25 (WebKit::pluginInformationDefaultLoadPolicyKey): 26 (WebKit::pluginInformationUpdatePastLastBlockedVersionIsKnownAvailableKey): 27 (WebKit::pluginInformationHasSandboxProfileKey): 28 (WebKit::pluginInformationFrameURLKey): 29 (WebKit::pluginInformationMIMETypeKey): 30 (WebKit::pluginInformationPageURLKey): 31 (WebKit::pluginInformationPluginspageAttributeURLKey): 32 (WebKit::pluginInformationPluginURLKey): 33 Add new keys. 34 35 (WebKit::pluginModuleInformation): 36 (WebKit::createPluginInformationDictionary): 37 Add creation functions to simplify multiple sites. 38 39 * Shared/Plugins/Netscape/mac/PluginInformationMac.mm: Added. 40 (WebKit::platformPluginModuleInformation): 41 Add platform specific data to the dictionary. 42 43 * UIProcess/API/C/WKPage.cpp: 44 (WKPageGetPluginInformationBundleIdentifierKey): 45 (WKPageGetPluginInformationBundleVersionKey): 46 (WKPageGetPluginInformationDisplayNameKey): 47 (WKPageGetPluginInformationFrameURLKey): 48 (WKPageGetPluginInformationMIMETypeKey): 49 (WKPageGetPluginInformationPageURLKey): 50 (WKPageGetPluginInformationPluginspageAttributeURLKey): 51 (WKPageGetPluginInformationPluginURLKey): 52 * UIProcess/API/C/WKPage.h: 53 Deprecate the old keys. 54 55 * UIProcess/API/C/mac/WKContextPrivateMac.h: 56 * UIProcess/API/C/mac/WKContextPrivateMac.mm: 57 (WKContextCopyPlugInInfoForBundleIdentifier): 58 (WKContextGetInfoForInstalledPlugIns): 59 Simplify by using the new createPluginInformationDictionary functions. 60 61 (WKPlugInInfoPathKey): 62 (WKPlugInInfoBundleIdentifierKey): 63 (WKPlugInInfoVersionKey): 64 (WKPlugInInfoLoadPolicyKey): 65 (WKPlugInInfoUpdatePastLastBlockedVersionIsKnownAvailableKey): 66 (WKPlugInInfoIsSandboxedKey): 67 Deprecate the old keys. 68 69 * UIProcess/WebLoaderClient.cpp: 70 (WebKit::WebLoaderClient::didFailToInitializePlugin): 71 (WebKit::WebLoaderClient::didBlockInsecurePluginVersion): 72 (WebKit::WebLoaderClient::pluginLoadPolicy): 73 * UIProcess/WebLoaderClient.h: 74 * UIProcess/WebUIClient.cpp: 75 (WebKit::WebUIClient::unavailablePluginButtonClicked): 76 * UIProcess/WebUIClient.h: 77 Optimize for the most recent callback type which takes a dictionary, 78 and pull out the necessary bits from it for deprecated callbacks as necessary. 79 80 * UIProcess/WebPageProxy.h: 81 * UIProcess/WebPageProxy.cpp: 82 (WebKit::WebPageProxy::findPlugin): 83 (WebKit::WebPageProxy::unavailablePluginButtonClicked): 84 (WebKit::WebPageProxy::didFailToInitializePlugin): 85 (WebKit::WebPageProxy::didBlockInsecurePluginVersion): 86 Use createPluginInformationDictionary() consistently, to get consistent results for callbacks. 87 88 * WebKit2.xcodeproj/project.pbxproj: 89 Add new files. 90 1 91 2013-05-10 Brian J. Burg <burg@cs.washington.edu> 2 92 -
trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp
r149422 r149904 30 30 #include "PrintInfo.h" 31 31 #include "WKAPICast.h" 32 #include "WKPluginInformation.h" 32 33 #include "WebBackForwardList.h" 33 34 #include "WebData.h" … … 827 828 } 828 829 829 void WKPageSetInvalidMessageFunction(WKPageInvalidMessageFunction)830 {831 // FIXME: Remove this function when doing so won't break WebKit nightlies.832 }833 834 WKStringRef WKPageGetPluginInformationBundleIdentifierKey()835 {836 static WebString* key = WebString::create(WebPageProxy::pluginInformationBundleIdentifierKey()).leakRef();837 return toAPI(key);838 }839 840 WKStringRef WKPageGetPluginInformationBundleVersionKey()841 {842 static WebString* key = WebString::create(WebPageProxy::pluginInformationBundleVersionKey()).leakRef();843 return toAPI(key);844 }845 846 WKStringRef WKPageGetPluginInformationDisplayNameKey()847 {848 static WebString* key = WebString::create(WebPageProxy::pluginInformationDisplayNameKey()).leakRef();849 return toAPI(key);850 }851 852 WKStringRef WKPageGetPluginInformationFrameURLKey()853 {854 static WebString* key = WebString::create(WebPageProxy::pluginInformationFrameURLKey()).leakRef();855 return toAPI(key);856 }857 858 WKStringRef WKPageGetPluginInformationMIMETypeKey()859 {860 static WebString* key = WebString::create(WebPageProxy::pluginInformationMIMETypeKey()).leakRef();861 return toAPI(key);862 }863 864 WKStringRef WKPageGetPluginInformationPageURLKey()865 {866 static WebString* key = WebString::create(WebPageProxy::pluginInformationPageURLKey()).leakRef();867 return toAPI(key);868 }869 870 WKStringRef WKPageGetPluginInformationPluginspageAttributeURLKey()871 {872 static WebString* key = WebString::create(WebPageProxy::pluginInformationPluginspageAttributeURLKey()).leakRef();873 return toAPI(key);874 }875 876 WKStringRef WKPageGetPluginInformationPluginURLKey()877 {878 static WebString* key = WebString::create(WebPageProxy::pluginInformationPluginURLKey()).leakRef();879 return toAPI(key);880 }881 830 882 831 void WKPageSetOverridePrivateBrowsingEnabled(WKPageRef pageRef, bool enabled) … … 896 845 #endif 897 846 } 847 848 849 850 // -- DEPRECATED -- 851 852 void WKPageSetInvalidMessageFunction(WKPageInvalidMessageFunction) 853 { 854 // FIXME: Remove this function when doing so won't break WebKit nightlies. 855 } 856 857 WKStringRef WKPageGetPluginInformationBundleIdentifierKey() 858 { 859 return WKPluginInformationBundleIdentifierKey(); 860 } 861 862 WKStringRef WKPageGetPluginInformationBundleVersionKey() 863 { 864 return WKPluginInformationBundleVersionKey(); 865 } 866 867 WKStringRef WKPageGetPluginInformationDisplayNameKey() 868 { 869 return WKPluginInformationBundleVersionKey(); 870 } 871 872 WKStringRef WKPageGetPluginInformationFrameURLKey() 873 { 874 return WKPluginInformationFrameURLKey(); 875 } 876 877 WKStringRef WKPageGetPluginInformationMIMETypeKey() 878 { 879 return WKPluginInformationMIMETypeKey(); 880 } 881 882 WKStringRef WKPageGetPluginInformationPageURLKey() 883 { 884 return WKPluginInformationPageURLKey(); 885 } 886 887 WKStringRef WKPageGetPluginInformationPluginspageAttributeURLKey() 888 { 889 return WKPluginInformationPluginspageAttributeURLKey(); 890 } 891 892 WKStringRef WKPageGetPluginInformationPluginURLKey() 893 { 894 return WKPluginInformationPluginURLKey(); 895 } 896 897 // -- DEPRECATED -- 898 -
trunk/Source/WebKit2/UIProcess/API/C/WKPage.h
r149422 r149904 532 532 WK_EXPORT void WKPagePostMessageToInjectedBundle(WKPageRef page, WKStringRef messageName, WKTypeRef messageBody); 533 533 534 WK_EXPORT void WKPageSelectContextMenuItem(WKPageRef page, WKContextMenuItemRef item); 535 536 537 538 /* DEPRECATED - Please use constants from WKPluginInformation instead. */ 539 534 540 /* Value type: WKStringRef */ 535 541 WK_EXPORT WKStringRef WKPageGetPluginInformationBundleIdentifierKey(); … … 555 561 /* Value type: WKURLRef */ 556 562 WK_EXPORT WKStringRef WKPageGetPluginInformationPluginURLKey(); 557 558 WK_EXPORT void WKPageSelectContextMenuItem(WKPageRef page, WKContextMenuItemRef item);559 560 563 561 564 #ifdef __cplusplus -
trunk/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.h
r149765 r149904 38 38 WK_EXPORT bool WKContextIsPlugInUpdateAvailable(WKContextRef context, WKStringRef plugInBundleIdentifier); 39 39 40 WK_EXPORT WKDictionaryRef WKContextCopyPlugInInfoForBundleIdentifier(WKContextRef context, WKStringRef plugInBundleIdentifier); 41 42 typedef void (^WKContextGetInfoForInstalledPlugInsBlock)(WKArrayRef, WKErrorRef); 43 WK_EXPORT void WKContextGetInfoForInstalledPlugIns(WKContextRef context, WKContextGetInfoForInstalledPlugInsBlock block); 44 45 46 /* DEPRECATED - Please use constants from WKPluginInformation instead. */ 40 47 41 48 /* Value type: WKStringRef */ … … 57 64 WK_EXPORT WKStringRef WKPlugInInfoIsSandboxedKey(); 58 65 59 WK_EXPORT WKDictionaryRef WKContextCopyPlugInInfoForBundleIdentifier(WKContextRef context, WKStringRef plugInBundleIdentifier);60 61 typedef void (^WKContextGetInfoForInstalledPlugInsBlock)(WKArrayRef, WKErrorRef);62 WK_EXPORT void WKContextGetInfoForInstalledPlugIns(WKContextRef context, WKContextGetInfoForInstalledPlugInsBlock block);63 64 66 #ifdef __cplusplus 65 67 } -
trunk/Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.mm
r149765 r149904 30 30 #import "ImmutableDictionary.h" 31 31 #import "PluginInfoStore.h" 32 #import "PluginInformation.h" 32 33 #import "PluginSandboxProfile.h" 33 34 #import "StringUtilities.h" 34 35 #import "WKAPICast.h" 36 #import "WKPluginInformation.h" 35 37 #import "WKSharedAPICast.h" 36 38 #import "WKStringCF.h" … … 58 60 } 59 61 60 61 WKStringRef WKPlugInInfoPathKey()62 {63 static WebString* key = WebString::createFromUTF8String("WKPlugInInfoPath").leakRef();64 return toAPI(key);65 }66 67 WKStringRef WKPlugInInfoBundleIdentifierKey()68 {69 static WebString* key = WebString::createFromUTF8String("WKPlugInInfoBundleIdentifier").leakRef();70 return toAPI(key);71 }72 73 WKStringRef WKPlugInInfoVersionKey()74 {75 static WebString* key = WebString::createFromUTF8String("WKPlugInInfoVersion").leakRef();76 return toAPI(key);77 }78 79 WKStringRef WKPlugInInfoLoadPolicyKey()80 {81 static WebString* key = WebString::createFromUTF8String("WKPlugInInfoLoadPolicy").leakRef();82 return toAPI(key);83 }84 85 WKStringRef WKPlugInInfoUpdatePastLastBlockedVersionIsKnownAvailableKey()86 {87 static WebString* key = WebString::createFromUTF8String("WKPlugInInfoUpdatePastLastBlockedVersionIsKnownAvailable").leakRef();88 return toAPI(key);89 }90 91 WKStringRef WKPlugInInfoIsSandboxedKey()92 {93 static WebString* key = WebString::createFromUTF8String("WKPlugInInfoIsSandboxed").leakRef();94 return toAPI(key);95 }96 97 static PassRefPtr<ImmutableDictionary> createInfoDictionary(const PluginModuleInfo& info)98 {99 ImmutableDictionary::MapType map;100 map.set(toWTFString(WKPlugInInfoPathKey()), WebString::create(info.path));101 map.set(toWTFString(WKPlugInInfoBundleIdentifierKey()), WebString::create(info.bundleIdentifier));102 map.set(toWTFString(WKPlugInInfoVersionKey()), WebString::create(info.versionString));103 map.set(toWTFString(WKPlugInInfoLoadPolicyKey()), WebUInt64::create(toWKPluginLoadPolicy(PluginInfoStore::policyForPlugin(info))));104 map.set(toWTFString(WKPlugInInfoUpdatePastLastBlockedVersionIsKnownAvailableKey()), WebBoolean::create(WKIsPluginUpdateAvailable(nsStringFromWebCoreString(info.bundleIdentifier))));105 map.set(toWTFString(WKPlugInInfoIsSandboxedKey()), WebBoolean::create(pluginHasSandboxProfile(info.bundleIdentifier)));106 107 return ImmutableDictionary::adopt(map);108 }109 110 62 WKDictionaryRef WKContextCopyPlugInInfoForBundleIdentifier(WKContextRef contextRef, WKStringRef plugInBundleIdentifierRef) 111 63 { … … 114 66 return 0; 115 67 116 RefPtr<ImmutableDictionary> dictionary = create InfoDictionary(plugin);68 RefPtr<ImmutableDictionary> dictionary = createPluginInformationDictionary(plugin); 117 69 return toAPI(dictionary.release().leakRef()); 118 70 } … … 124 76 Vector<RefPtr<APIObject>> pluginInfoDictionaries; 125 77 for (const auto& plugin: plugins) 126 pluginInfoDictionaries.append(create InfoDictionary(plugin));78 pluginInfoDictionaries.append(createPluginInformationDictionary(plugin)); 127 79 128 80 RefPtr<ImmutableArray> array = ImmutableArray::adopt(pluginInfoDictionaries); … … 135 87 }); 136 88 } 89 90 91 /* DEPRECATED - Please use constants from WKPluginInformation instead. */ 92 93 WKStringRef WKPlugInInfoPathKey() 94 { 95 return WKPluginInformationPathKey(); 96 } 97 98 WKStringRef WKPlugInInfoBundleIdentifierKey() 99 { 100 return WKPluginInformationBundleIdentifierKey(); 101 } 102 103 WKStringRef WKPlugInInfoVersionKey() 104 { 105 return WKPluginInformationBundleVersionKey(); 106 } 107 108 WKStringRef WKPlugInInfoLoadPolicyKey() 109 { 110 return WKPluginInformationDefaultLoadPolicyKey(); 111 } 112 113 WKStringRef WKPlugInInfoUpdatePastLastBlockedVersionIsKnownAvailableKey() 114 { 115 return WKPluginInformationUpdatePastLastBlockedVersionIsKnownAvailableKey(); 116 } 117 118 WKStringRef WKPlugInInfoIsSandboxedKey() 119 { 120 return WKPluginInformationHasSandboxProfileKey(); 121 } -
trunk/Source/WebKit2/UIProcess/WebLoaderClient.cpp
r149848 r149904 29 29 #include "ImmutableArray.h" 30 30 #include "ImmutableDictionary.h" 31 #include "PluginInformation.h" 31 32 #include "WKAPICast.h" 32 33 #include "WebBackForwardListItem.h" … … 275 276 } 276 277 277 void WebLoaderClient::didFailToInitializePlugin(WebPageProxy* page, const String& mimeType, const String& frameURLString, const String& pageURLString)278 void WebLoaderClient::didFailToInitializePlugin(WebPageProxy* page, ImmutableDictionary* pluginInformation) 278 279 { 279 280 if (m_client.didFailToInitializePlugin_deprecatedForUseWithV0) 280 m_client.didFailToInitializePlugin_deprecatedForUseWithV0(toAPI(page), toAPI(mimeType.impl()), m_client.clientInfo); 281 m_client.didFailToInitializePlugin_deprecatedForUseWithV0( 282 toAPI(page), 283 toAPI(pluginInformation->get<WebString>(pluginInformationMIMETypeKey())), 284 m_client.clientInfo); 281 285 282 286 if (m_client.pluginDidFail_deprecatedForUseWithV1) 283 m_client.pluginDidFail_deprecatedForUseWithV1(toAPI(page), kWKErrorCodeCannotLoadPlugIn, toAPI(mimeType.impl()), 0, 0, m_client.clientInfo); 284 285 if (m_client.pluginDidFail) { 286 RefPtr<ImmutableDictionary> pluginInformation = WebPageProxy::pluginInformationDictionary(String(), String(), String(), frameURLString, mimeType, pageURLString, String(), String()); 287 m_client.pluginDidFail(toAPI(page), kWKErrorCodeCannotLoadPlugIn, toAPI(pluginInformation.get()), m_client.clientInfo); 288 } 289 } 290 291 void WebLoaderClient::didBlockInsecurePluginVersion(WebPageProxy* page, const String& mimeType, const String& pluginBundleIdentifier, const String& pluginBundleVersion, const String& frameURLString, const String& pageURLString) 287 m_client.pluginDidFail_deprecatedForUseWithV1( 288 toAPI(page), 289 kWKErrorCodeCannotLoadPlugIn, 290 toAPI(pluginInformation->get<WebString>(pluginInformationMIMETypeKey())), 291 0, 292 0, 293 m_client.clientInfo); 294 295 if (m_client.pluginDidFail) 296 m_client.pluginDidFail( 297 toAPI(page), 298 kWKErrorCodeCannotLoadPlugIn, 299 toAPI(pluginInformation), 300 m_client.clientInfo); 301 } 302 303 void WebLoaderClient::didBlockInsecurePluginVersion(WebPageProxy* page, ImmutableDictionary* pluginInformation) 292 304 { 293 305 if (m_client.pluginDidFail_deprecatedForUseWithV1) 294 m_client.pluginDidFail_deprecatedForUseWithV1(toAPI(page), kWKErrorCodeInsecurePlugInVersion, toAPI(mimeType.impl()), toAPI(pluginBundleIdentifier.impl()), toAPI(pluginBundleVersion.impl()), m_client.clientInfo); 295 296 if (m_client.pluginDidFail) { 297 RefPtr<ImmutableDictionary> pluginInformation = WebPageProxy::pluginInformationDictionary(pluginBundleIdentifier, pluginBundleVersion, String(), frameURLString, mimeType, pageURLString, String(), String()); 298 m_client.pluginDidFail(toAPI(page), kWKErrorCodeInsecurePlugInVersion, toAPI(pluginInformation.get()), m_client.clientInfo); 299 } 300 } 301 302 PluginModuleLoadPolicy WebLoaderClient::pluginLoadPolicy(WebPageProxy* page, const String& pluginBundleIdentifier, const String& pluginBundleVersion, const String& displayName, const String& frameURLString, const String& pageURLString, PluginModuleLoadPolicy currentPluginLoadPolicy) 306 m_client.pluginDidFail_deprecatedForUseWithV1( 307 toAPI(page), 308 kWKErrorCodeInsecurePlugInVersion, 309 toAPI(pluginInformation->get<WebString>(pluginInformationMIMETypeKey())), 310 toAPI(pluginInformation->get<WebString>(pluginInformationBundleIdentifierKey())), 311 toAPI(pluginInformation->get<WebString>(pluginInformationBundleVersionKey())), 312 m_client.clientInfo); 313 314 if (m_client.pluginDidFail) 315 m_client.pluginDidFail( 316 toAPI(page), 317 kWKErrorCodeInsecurePlugInVersion, 318 toAPI(pluginInformation), 319 m_client.clientInfo); 320 } 321 322 PluginModuleLoadPolicy WebLoaderClient::pluginLoadPolicy(WebPageProxy* page, PluginModuleLoadPolicy currentPluginLoadPolicy, ImmutableDictionary* pluginInformation) 303 323 { 304 324 if (!m_client.pluginLoadPolicy) 305 325 return currentPluginLoadPolicy; 306 326 307 RefPtr<ImmutableDictionary> pluginInformation = WebPageProxy::pluginInformationDictionary(pluginBundleIdentifier, pluginBundleVersion, displayName, frameURLString, String(), pageURLString, String(), String()); 308 return toPluginModuleLoadPolicy(m_client.pluginLoadPolicy(toAPI(page), toWKPluginLoadPolicy(currentPluginLoadPolicy), toAPI(pluginInformation.get()), m_client.clientInfo)); 327 return toPluginModuleLoadPolicy(m_client.pluginLoadPolicy(toAPI(page), toWKPluginLoadPolicy(currentPluginLoadPolicy), toAPI(pluginInformation), m_client.clientInfo)); 309 328 } 310 329 -
trunk/Source/WebKit2/UIProcess/WebLoaderClient.h
r149848 r149904 45 45 class AuthenticationChallengeProxy; 46 46 class AuthenticationDecisionListener; 47 class ImmutableDictionary; 47 48 class WebBackForwardListItem; 48 49 class WebFrameProxy; … … 90 91 void willGoToBackForwardListItem(WebPageProxy*, WebBackForwardListItem*, APIObject*); 91 92 92 PluginModuleLoadPolicy pluginLoadPolicy(WebPageProxy*, const String& pluginBundleIdentifier, const String& pluginBundleVersion, const String& displayName, const String& frameURLString, const String& pageURLString, PluginModuleLoadPolicy currentPluginLoadPolicy); 93 void didFailToInitializePlugin(WebPageProxy*, const String& mimeType, const String& frameURLString, const String& pageURLString); 94 void didBlockInsecurePluginVersion(WebPageProxy*, const String& mimeType, const String& pluginBundleIdentifier, const String& pluginBundleVersion, const String& frameURLString, const String& pageURLString); 95 93 PluginModuleLoadPolicy pluginLoadPolicy(WebPageProxy*, PluginModuleLoadPolicy currentPluginLoadPolicy, ImmutableDictionary*); 94 void didFailToInitializePlugin(WebPageProxy*, ImmutableDictionary*); 95 void didBlockInsecurePluginVersion(WebPageProxy*, ImmutableDictionary*); 96 96 }; 97 97 -
trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp
r149848 r149904 44 44 #include "NotificationPermissionRequestManager.h" 45 45 #include "PageClient.h" 46 #include "PluginInformation.h" 46 47 #include "PrintInfo.h" 47 48 #include "SessionState.h" … … 1392 1393 1393 1394 newMimeType = mimeType.lower(); 1394 1395 1395 pluginLoadPolicy = PluginModuleLoadNormally; 1396 1396 1397 PluginModuleInfo plugin = m_process->context()->pluginInfoStore().findPlugin(newMimeType, KURL(KURL(), urlString)); 1397 1398 if (!plugin.path) … … 1401 1402 1402 1403 #if PLATFORM(MAC) 1403 PluginModuleLoadPolicy currentPluginLoadPolicy = static_cast<PluginModuleLoadPolicy>(pluginLoadPolicy);1404 pluginLoadPolicy = m_loaderClient.pluginLoadPolicy(this, plugin.bundleIdentifier, plugin.versionString, plugin.info.name, frameURLString, pageURLString, currentPluginLoadPolicy);1404 RefPtr<ImmutableDictionary> pluginInformation = createPluginInformationDictionary(plugin, frameURLString, String(), pageURLString, String(), String()); 1405 pluginLoadPolicy = m_loaderClient.pluginLoadPolicy(this, static_cast<PluginModuleLoadPolicy>(pluginLoadPolicy), pluginInformation.get()); 1405 1406 #else 1406 1407 UNUSED_PARAM(frameURLString); … … 2701 2702 } 2702 2703 2703 String WebPageProxy::pluginInformationBundleIdentifierKey()2704 {2705 return ASCIILiteral("PluginInformationBundleIdentifier");2706 }2707 2708 String WebPageProxy::pluginInformationBundleVersionKey()2709 {2710 return ASCIILiteral("PluginInformationBundleVersion");2711 }2712 2713 String WebPageProxy::pluginInformationDisplayNameKey()2714 {2715 return ASCIILiteral("PluginInformationDisplayName");2716 }2717 2718 String WebPageProxy::pluginInformationFrameURLKey()2719 {2720 return ASCIILiteral("PluginInformationFrameURL");2721 }2722 2723 String WebPageProxy::pluginInformationMIMETypeKey()2724 {2725 return ASCIILiteral("PluginInformationMIMEType");2726 }2727 2728 String WebPageProxy::pluginInformationPageURLKey()2729 {2730 return ASCIILiteral("PluginInformationPageURL");2731 }2732 2733 String WebPageProxy::pluginInformationPluginspageAttributeURLKey()2734 {2735 return ASCIILiteral("PluginInformationPluginspageAttributeURL");2736 }2737 2738 String WebPageProxy::pluginInformationPluginURLKey()2739 {2740 return ASCIILiteral("PluginInformationPluginURL");2741 }2742 2743 PassRefPtr<ImmutableDictionary> WebPageProxy::pluginInformationDictionary(const String& bundleIdentifier, const String& bundleVersion, const String& displayName, const String& frameURLString, const String& mimeType, const String& pageURLString, const String& pluginspageAttributeURLString, const String& pluginURLString)2744 {2745 HashMap<String, RefPtr<APIObject>> pluginInfoMap;2746 if (!bundleIdentifier.isEmpty())2747 pluginInfoMap.set(WebPageProxy::pluginInformationBundleIdentifierKey(), WebString::create(bundleIdentifier));2748 if (!bundleVersion.isEmpty())2749 pluginInfoMap.set(WebPageProxy::pluginInformationBundleVersionKey(), WebString::create(bundleVersion));2750 if (!displayName.isEmpty())2751 pluginInfoMap.set(WebPageProxy::pluginInformationDisplayNameKey(), WebString::create(displayName));2752 if (!frameURLString.isEmpty())2753 pluginInfoMap.set(WebPageProxy::pluginInformationFrameURLKey(), WebURL::create(frameURLString));2754 if (!mimeType.isEmpty())2755 pluginInfoMap.set(WebPageProxy::pluginInformationMIMETypeKey(), WebString::create(mimeType));2756 if (!pageURLString.isEmpty())2757 pluginInfoMap.set(WebPageProxy::pluginInformationPageURLKey(), WebURL::create(pageURLString));2758 if (!pluginspageAttributeURLString.isEmpty())2759 pluginInfoMap.set(WebPageProxy::pluginInformationPluginspageAttributeURLKey(), WebURL::create(pluginspageAttributeURLString));2760 if (!pluginURLString.isEmpty())2761 pluginInfoMap.set(WebPageProxy::pluginInformationPluginURLKey(), WebURL::create(pluginURLString));2762 2763 return ImmutableDictionary::adopt(pluginInfoMap);2764 }2765 2766 2704 void WebPageProxy::unavailablePluginButtonClicked(uint32_t opaquePluginUnavailabilityReason, const String& mimeType, const String& pluginURLString, const String& pluginspageAttributeURLString, const String& frameURLString, const String& pageURLString) 2767 2705 { … … 2771 2709 MESSAGE_CHECK_URL(pageURLString); 2772 2710 2773 String pluginBundleIdentifier; 2774 String pluginBundleVersion; 2775 String pluginName; 2711 RefPtr<ImmutableDictionary> pluginInformation; 2712 #if ENABLE(NETSCAPE_PLUGIN_API) 2776 2713 String newMimeType = mimeType; 2777 #if ENABLE(NETSCAPE_PLUGIN_API)2778 2714 PluginModuleInfo plugin = m_process->context()->pluginInfoStore().findPlugin(newMimeType, KURL(KURL(), pluginURLString)); 2779 #if PLATFORM(MAC) 2780 pluginBundleIdentifier = plugin.bundleIdentifier; 2781 pluginBundleVersion = plugin.versionString; 2782 #endif 2783 pluginName = plugin.info.name; 2715 pluginInformation = createPluginInformationDictionary(plugin, frameURLString, mimeType, pageURLString, pluginspageAttributeURLString, pluginURLString); 2784 2716 #endif 2785 2717 … … 2810 2742 } 2811 2743 2812 m_uiClient.unavailablePluginButtonClicked(this, pluginUnavailabilityReason, mimeType, pluginBundleIdentifier, pluginBundleVersion, pluginName, pluginURLString, pluginspageAttributeURLString, frameURLString, pageURLString);2744 m_uiClient.unavailablePluginButtonClicked(this, pluginUnavailabilityReason, pluginInformation.get()); 2813 2745 } 2814 2746 … … 4203 4135 void WebPageProxy::didFailToInitializePlugin(const String& mimeType, const String& frameURLString, const String& pageURLString) 4204 4136 { 4205 m_loaderClient.didFailToInitializePlugin(this, mimeType, frameURLString, pageURLString); 4206 } 4207 4208 // FIXME: ENABLE(NETSCAPE_PLUGIN_API) 4137 m_loaderClient.didFailToInitializePlugin(this, createPluginInformationDictionary(mimeType, frameURLString, pageURLString).get()); 4138 } 4139 4209 4140 void WebPageProxy::didBlockInsecurePluginVersion(const String& mimeType, const String& pluginURLString, const String& frameURLString, const String& pageURLString) 4210 4141 { 4211 String pluginBundleIdentifier; 4212 String pluginBundleVersion; 4142 RefPtr<ImmutableDictionary> pluginInformation; 4143 4144 #if PLATFORM(MAC) && ENABLE(NETSCAPE_PLUGIN_API) 4213 4145 String newMimeType = mimeType; 4214 4215 #if PLATFORM(MAC) && ENABLE(NETSCAPE_PLUGIN_API)4216 4146 PluginModuleInfo plugin = m_process->context()->pluginInfoStore().findPlugin(newMimeType, KURL(KURL(), pluginURLString)); 4217 4218 pluginBundleIdentifier = plugin.bundleIdentifier; 4219 pluginBundleVersion = plugin.versionString; 4147 pluginInformation = createPluginInformationDictionary(plugin, frameURLString, mimeType, pageURLString, String(), String()); 4220 4148 #else 4221 4149 UNUSED_PARAM(pluginURLString); 4222 4150 #endif 4223 4151 4224 m_loaderClient.didBlockInsecurePluginVersion(this, newMimeType, pluginBundleIdentifier, pluginBundleVersion, frameURLString, pageURLString);4152 m_loaderClient.didBlockInsecurePluginVersion(this, pluginInformation.get()); 4225 4153 } 4226 4154 -
trunk/Source/WebKit2/UIProcess/WebPageProxy.h
r149848 r149904 771 771 void connectionWillClose(CoreIPC::Connection*); 772 772 773 static String pluginInformationBundleIdentifierKey();774 static String pluginInformationBundleVersionKey();775 static String pluginInformationDisplayNameKey();776 static String pluginInformationFrameURLKey();777 static String pluginInformationMIMETypeKey();778 static String pluginInformationPageURLKey();779 static String pluginInformationPluginspageAttributeURLKey();780 static String pluginInformationPluginURLKey();781 static PassRefPtr<ImmutableDictionary> pluginInformationDictionary(const String& bundleIdentifier, const String& bundleVersion, const String& displayName, const String& frameURLString, const String& mimeType, const String& pageURLString, const String& pluginspageAttributeURLString, const String& pluginURLString);782 783 773 private: 784 774 WebPageProxy(PageClient*, PassRefPtr<WebProcessProxy>, WebPageGroup*, uint64_t pageID); -
trunk/Source/WebKit2/UIProcess/WebUIClient.cpp
r143988 r149904 31 31 #include "NativeWebWheelEvent.h" 32 32 #include "NotificationPermissionRequest.h" 33 #include "PluginInformation.h" 33 34 #include "WKAPICast.h" 34 35 #include "WebColorPickerResultListenerProxy.h" … … 176 177 } 177 178 178 void WebUIClient::unavailablePluginButtonClicked(WebPageProxy* page, WKPluginUnavailabilityReason pluginUnavailabilityReason, const String& mimeType, const String& pluginBundleIdentifier, const String& pluginBundleVersion, const String& displayName, const String& pluginURLString, const String& pluginspageAttributeURLString, const String& frameURLString, const String& pageURLString)179 void WebUIClient::unavailablePluginButtonClicked(WebPageProxy* page, WKPluginUnavailabilityReason pluginUnavailabilityReason, ImmutableDictionary* pluginInformation) 179 180 { 180 181 if (pluginUnavailabilityReason == kWKPluginUnavailabilityReasonPluginMissing) { 181 182 if (m_client.missingPluginButtonClicked_deprecatedForUseWithV0) 182 m_client.missingPluginButtonClicked_deprecatedForUseWithV0(toAPI(page), toAPI(mimeType.impl()), toAPI(pluginURLString.impl()), toAPI(pluginspageAttributeURLString.impl()), m_client.clientInfo); 183 m_client.missingPluginButtonClicked_deprecatedForUseWithV0( 184 toAPI(page), 185 toAPI(pluginInformation->get<WebString>(pluginInformationMIMETypeKey())), 186 toAPI(pluginInformation->get<WebString>(pluginInformationPluginURLKey())), 187 toAPI(pluginInformation->get<WebString>(pluginInformationPluginspageAttributeURLKey())), 188 m_client.clientInfo); 183 189 } 184 190 185 191 if (m_client.unavailablePluginButtonClicked_deprecatedForUseWithV1) 186 m_client.unavailablePluginButtonClicked_deprecatedForUseWithV1(toAPI(page), pluginUnavailabilityReason, toAPI(mimeType.impl()), toAPI(pluginURLString.impl()), toAPI(pluginspageAttributeURLString.impl()), m_client.clientInfo); 187 188 if (m_client.unavailablePluginButtonClicked) { 189 RefPtr<ImmutableDictionary> pluginInformation = WebPageProxy::pluginInformationDictionary(pluginBundleIdentifier, pluginBundleVersion, displayName, frameURLString, mimeType, pageURLString, pluginspageAttributeURLString, pluginURLString); 190 m_client.unavailablePluginButtonClicked(toAPI(page), pluginUnavailabilityReason, toAPI(pluginInformation.get()), m_client.clientInfo); 191 } 192 m_client.unavailablePluginButtonClicked_deprecatedForUseWithV1( 193 toAPI(page), 194 pluginUnavailabilityReason, 195 toAPI(pluginInformation->get<WebString>(pluginInformationMIMETypeKey())), 196 toAPI(pluginInformation->get<WebString>(pluginInformationPluginURLKey())), 197 toAPI(pluginInformation->get<WebString>(pluginInformationPluginspageAttributeURLKey())), 198 m_client.clientInfo); 199 200 if (m_client.unavailablePluginButtonClicked) 201 m_client.unavailablePluginButtonClicked( 202 toAPI(page), 203 pluginUnavailabilityReason, 204 toAPI(pluginInformation), 205 m_client.clientInfo); 192 206 } 193 207 -
trunk/Source/WebKit2/UIProcess/WebUIClient.h
r143988 r149904 46 46 class APIObject; 47 47 class GeolocationPermissionRequestProxy; 48 class ImmutableDictionary; 48 49 class NativeWebKeyboardEvent; 49 50 class NativeWebWheelEvent; … … 72 73 void setStatusText(WebPageProxy*, const String&); 73 74 void mouseDidMoveOverElement(WebPageProxy*, const WebHitTestResult::Data&, WebEvent::Modifiers, APIObject*); 74 void unavailablePluginButtonClicked(WebPageProxy*, WKPluginUnavailabilityReason, const String& mimeType, const String& pluginBundleIdentifier, const String& pluginBundleVersion, const String& displayName, const String& pluginURLString, const String& pluginspageAttributeURLString, const String& frameURLString, const String& pageURLString);75 void unavailablePluginButtonClicked(WebPageProxy*, WKPluginUnavailabilityReason, ImmutableDictionary*); 75 76 76 77 bool implementsDidNotHandleKeyEvent() const; -
trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj
r149765 r149904 573 573 7801C099142290C400FAF9AF /* WebHitTestResult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7801C095142290C400FAF9AF /* WebHitTestResult.cpp */; }; 574 574 7801C09A142290C400FAF9AF /* WebHitTestResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 7801C096142290C400FAF9AF /* WebHitTestResult.h */; }; 575 7C135AA8173B0BCA00586AE2 /* WKPluginInformation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C135AA6173B0BCA00586AE2 /* WKPluginInformation.cpp */; }; 576 7C135AA9173B0BCA00586AE2 /* WKPluginInformation.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C135AA7173B0BCA00586AE2 /* WKPluginInformation.h */; }; 577 7C135AAC173B0CFF00586AE2 /* PluginInformationMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7C135AAA173B0CFF00586AE2 /* PluginInformationMac.mm */; }; 575 578 7C387434172F5615001BD88A /* PageBanner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C387433172F5615001BD88A /* PageBanner.cpp */; }; 579 7C3F8C90173AF52D007B7F39 /* PluginInformation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F8C8E173AF52D007B7F39 /* PluginInformation.cpp */; }; 580 7C3F8C91173AF52D007B7F39 /* PluginInformation.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C3F8C8F173AF52D007B7F39 /* PluginInformation.h */; }; 576 581 7C6D37FC172F555F009D2847 /* PageBannerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7C6D37FA172F555F009D2847 /* PageBannerMac.mm */; }; 577 582 7CB16FEF1724BA23007A0A95 /* com.apple.ist.ds.appleconnect.webplugin.sb in Copy Plug-in Sandbox Profiles */ = {isa = PBXBuildFile; fileRef = 7CB16FE21724B9B5007A0A95 /* com.apple.ist.ds.appleconnect.webplugin.sb */; }; … … 2049 2054 7801C095142290C400FAF9AF /* WebHitTestResult.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebHitTestResult.cpp; sourceTree = "<group>"; }; 2050 2055 7801C096142290C400FAF9AF /* WebHitTestResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebHitTestResult.h; sourceTree = "<group>"; }; 2056 7C135AA6173B0BCA00586AE2 /* WKPluginInformation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKPluginInformation.cpp; sourceTree = "<group>"; }; 2057 7C135AA7173B0BCA00586AE2 /* WKPluginInformation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKPluginInformation.h; sourceTree = "<group>"; }; 2058 7C135AAA173B0CFF00586AE2 /* PluginInformationMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PluginInformationMac.mm; sourceTree = "<group>"; }; 2051 2059 7C387433172F5615001BD88A /* PageBanner.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PageBanner.cpp; sourceTree = "<group>"; }; 2060 7C3F8C8E173AF52D007B7F39 /* PluginInformation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PluginInformation.cpp; sourceTree = "<group>"; }; 2061 7C3F8C8F173AF52D007B7F39 /* PluginInformation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PluginInformation.h; sourceTree = "<group>"; }; 2052 2062 7C6D37FA172F555F009D2847 /* PageBannerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PageBannerMac.mm; sourceTree = "<group>"; }; 2053 2063 7CB16FE21724B9B5007A0A95 /* com.apple.ist.ds.appleconnect.webplugin.sb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = com.apple.ist.ds.appleconnect.webplugin.sb; sourceTree = "<group>"; }; … … 3046 3056 1A4A9C5312B816CF008FE984 /* NetscapePluginModule.cpp */, 3047 3057 1A4A9C5412B816CF008FE984 /* NetscapePluginModule.h */, 3058 7C3F8C8E173AF52D007B7F39 /* PluginInformation.cpp */, 3059 7C3F8C8F173AF52D007B7F39 /* PluginInformation.h */, 3048 3060 ); 3049 3061 path = Netscape; … … 3054 3066 children = ( 3055 3067 1A4A9C9912B821CD008FE984 /* NetscapePluginModuleMac.mm */, 3068 7C135AAA173B0CFF00586AE2 /* PluginInformationMac.mm */, 3056 3069 ); 3057 3070 path = mac; … … 4957 4970 93BDEB00171DD7AF00BFEE1B /* WKPageLoadTypesPrivate.h */, 4958 4971 A5EFD38B16B0E88C00B2F0E8 /* WKPageVisibilityTypes.h */, 4972 7C135AA6173B0BCA00586AE2 /* WKPluginInformation.cpp */, 4973 7C135AA7173B0BCA00586AE2 /* WKPluginInformation.h */, 4959 4974 37948406150C4B9600E52CE9 /* WKRenderLayer.cpp */, 4960 4975 37948407150C4B9600E52CE9 /* WKRenderLayer.h */, … … 5582 5597 7CF47FF717275B71008ACB91 /* WKBundlePageBanner.h in Headers */, 5583 5598 33D3A3C2133960B000709BE4 /* WebMediaCacheManager.h in Headers */, 5599 7C3F8C91173AF52D007B7F39 /* PluginInformation.h in Headers */, 5584 5600 33D3A3C91339617900709BE4 /* WebMediaCacheManagerMessages.h in Headers */, 5585 5601 33D3A3BB1339606200709BE4 /* WebMediaCacheManagerProxy.h in Headers */, … … 5746 5762 1A1D8BA21731A36300141DA4 /* LocalStorageDatabase.h in Headers */, 5747 5763 BC407602124FF0270068F20A /* WKNumber.h in Headers */, 5764 7C135AA9173B0BCA00586AE2 /* WKPluginInformation.h in Headers */, 5748 5765 BC857FE612B843D800EDEB2E /* WKOpenPanelParameters.h in Headers */, 5749 5766 BC1DFE8F12B31CA8005DF730 /* WKOpenPanelResultListener.h in Headers */, … … 6604 6621 5160BFE113381DF900918999 /* Logging.mac.mm in Sources */, 6605 6622 1A24B5F211F531E800C38269 /* MachUtilities.cpp in Sources */, 6623 7C3F8C90173AF52D007B7F39 /* PluginInformation.cpp in Sources */, 6606 6624 1A232902162C867300D82F7A /* MessageDecoder.cpp in Sources */, 6607 6625 1A2328FE162C866A00D82F7A /* MessageEncoder.cpp in Sources */, … … 6661 6679 2D2ADF0916362DD500197E47 /* PDFPluginTextAnnotation.mm in Sources */, 6662 6680 1AAF061512B01131008E49E2 /* PDFViewController.mm in Sources */, 6681 7C135AAC173B0CFF00586AE2 /* PluginInformationMac.mm in Sources */, 6663 6682 BCF505E81243047B005955AE /* PlatformCertificateInfo.mm in Sources */, 6664 6683 BCC43ABA127B95DC00317F16 /* PlatformPopupMenuData.cpp in Sources */, … … 6874 6893 BC857F8612B82D0B00EDEB2E /* WebOpenPanelResultListener.cpp in Sources */, 6875 6894 BC857F7E12B82CEE00EDEB2E /* WebOpenPanelResultListenerProxy.cpp in Sources */, 6895 7C135AA8173B0BCA00586AE2 /* WKPluginInformation.cpp in Sources */, 6876 6896 BC963D6B113DD19200574BE2 /* WebPage.cpp in Sources */, 6877 6897 5153569C1291B1D2000749DC /* WebPageContextMenuClient.cpp in Sources */,
Note: See TracChangeset
for help on using the changeset viewer.