Changeset 221621 in webkit
- Timestamp:
- Sep 5, 2017 10:36:52 AM (7 years ago)
- Location:
- trunk
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r221620 r221621 1 2017-09-05 Alex Christensen <achristensen@webkit.org> 2 3 Add WKUIDelegatePrivate equivalent of WKPageUIClient's unavailablePluginButtonClicked 4 https://bugs.webkit.org/show_bug.cgi?id=176274 5 <rdar://problem/29270035> 6 7 Reviewed by Darin Adler. 8 9 * UIProcess/API/APIUIClient.h: 10 (API::UIClient::unavailablePluginButtonClicked): 11 * UIProcess/API/C/WKPage.cpp: 12 (WKPageSetPageUIClient): 13 * UIProcess/API/Cocoa/WKPreferences.mm: 14 (-[WKPreferences _setPluginsEnabled:]): 15 (-[WKPreferences _pluginsEnabled]): 16 * UIProcess/API/Cocoa/WKPreferencesPrivate.h: 17 * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: 18 * UIProcess/Cocoa/UIDelegate.h: 19 * UIProcess/Cocoa/UIDelegate.mm: 20 (WebKit::UIDelegate::setDelegate): 21 (WebKit::toWKPluginUnavailabilityReason): 22 (WebKit::UIDelegate::UIClient::unavailablePluginButtonClicked): 23 * UIProcess/WebPageProxy.cpp: 24 (WebKit::WebPageProxy::unavailablePluginButtonClicked): 25 1 26 2017-09-04 Alex Christensen <achristensen@webkit.org> 2 27 -
trunk/Source/WebKit/UIProcess/API/APIUIClient.h
r221503 r221621 94 94 virtual void mouseDidMoveOverElement(WebKit::WebPageProxy*, const WebKit::WebHitTestResultData&, WebKit::WebEvent::Modifiers, Object*) { } 95 95 #if ENABLE(NETSCAPE_PLUGIN_API) 96 virtual void unavailablePluginButtonClicked(WebKit::WebPageProxy *, WKPluginUnavailabilityReason, Dictionary*) { }96 virtual void unavailablePluginButtonClicked(WebKit::WebPageProxy&, WKPluginUnavailabilityReason, Dictionary&) { } 97 97 #endif // ENABLE(NETSCAPE_PLUGIN_API) 98 98 -
trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp
r221503 r221621 1789 1789 1790 1790 #if ENABLE(NETSCAPE_PLUGIN_API) 1791 void unavailablePluginButtonClicked(WebPageProxy * page, WKPluginUnavailabilityReason pluginUnavailabilityReason, API::Dictionary*pluginInformation) final1791 void unavailablePluginButtonClicked(WebPageProxy& page, WKPluginUnavailabilityReason pluginUnavailabilityReason, API::Dictionary& pluginInformation) final 1792 1792 { 1793 1793 if (pluginUnavailabilityReason == kWKPluginUnavailabilityReasonPluginMissing) { 1794 1794 if (m_client.missingPluginButtonClicked_deprecatedForUseWithV0) 1795 1795 m_client.missingPluginButtonClicked_deprecatedForUseWithV0( 1796 toAPI( page),1797 toAPI(pluginInformation ->get<API::String>(pluginInformationMIMETypeKey())),1798 toAPI(pluginInformation ->get<API::String>(pluginInformationPluginURLKey())),1799 toAPI(pluginInformation ->get<API::String>(pluginInformationPluginspageAttributeURLKey())),1796 toAPI(&page), 1797 toAPI(pluginInformation.get<API::String>(pluginInformationMIMETypeKey())), 1798 toAPI(pluginInformation.get<API::String>(pluginInformationPluginURLKey())), 1799 toAPI(pluginInformation.get<API::String>(pluginInformationPluginspageAttributeURLKey())), 1800 1800 m_client.base.clientInfo); 1801 1801 } … … 1803 1803 if (m_client.unavailablePluginButtonClicked_deprecatedForUseWithV1) 1804 1804 m_client.unavailablePluginButtonClicked_deprecatedForUseWithV1( 1805 toAPI( page),1805 toAPI(&page), 1806 1806 pluginUnavailabilityReason, 1807 toAPI(pluginInformation ->get<API::String>(pluginInformationMIMETypeKey())),1808 toAPI(pluginInformation ->get<API::String>(pluginInformationPluginURLKey())),1809 toAPI(pluginInformation ->get<API::String>(pluginInformationPluginspageAttributeURLKey())),1807 toAPI(pluginInformation.get<API::String>(pluginInformationMIMETypeKey())), 1808 toAPI(pluginInformation.get<API::String>(pluginInformationPluginURLKey())), 1809 toAPI(pluginInformation.get<API::String>(pluginInformationPluginspageAttributeURLKey())), 1810 1810 m_client.base.clientInfo); 1811 1811 1812 1812 if (m_client.unavailablePluginButtonClicked) 1813 1813 m_client.unavailablePluginButtonClicked( 1814 toAPI( page),1814 toAPI(&page), 1815 1815 pluginUnavailabilityReason, 1816 toAPI( pluginInformation),1816 toAPI(&pluginInformation), 1817 1817 m_client.base.clientInfo); 1818 1818 } -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm
r220542 r221621 638 638 } 639 639 640 - (void)_setPlugInsEnabled:(BOOL)enabled 641 { 642 _preferences->setPluginsEnabled(enabled); 643 } 644 645 - (BOOL)_plugInsEnabled 646 { 647 return _preferences->pluginsEnabled(); 648 } 649 640 650 - (BOOL)_javaScriptCanAccessClipboard 641 651 { -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h
r220542 r221621 118 118 - (void)_setEnabled:(BOOL)value forFeature:(_WKExperimentalFeature *)feature WK_API_AVAILABLE(macosx(10.12), ios(10.0)); 119 119 120 #if !TARGET_OS_IPHONE 121 @property (nonatomic, setter=_setPlugInsEnabled:) BOOL _plugInsEnabled WK_API_AVAILABLE(macosx(WK_MAC_TBA)); 122 #endif 123 120 124 @end 121 125 -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h
r221503 r221621 63 63 _WKResourceLimitMemory, 64 64 _WKResourceLimitCPU, 65 } WK_API_AVAILABLE(macosx(WK_MAC_TBA)); 66 67 typedef NS_ENUM(NSInteger, _WKPlugInUnavailabilityReason) { 68 _WKPlugInUnavailabilityReasonPluginMissing, 69 _WKPlugInUnavailabilityReasonPluginCrashed, 70 _WKPlugInUnavailabilityReasonInsecurePluginVersion 65 71 } WK_API_AVAILABLE(macosx(WK_MAC_TBA)); 66 72 … … 154 160 - (void)_webView:(WKWebView *)webView saveDataToFile:(NSData *)data suggestedFilename:(NSString *)suggestedFilename mimeType:(NSString *)mimeType originatingURL:(NSURL *)url WK_API_AVAILABLE(macosx(WK_MAC_TBA)); 155 161 - (void)_webView:(WKWebView *)webView didExceedBackgroundResourceLimitWhileInForeground:(_WKResourceLimit)limit WK_API_AVAILABLE(macosx(WK_MAC_TBA)); 162 - (void)_webView:(WKWebView *)webView unavailablePlugInButtonClickedWithReason:(_WKPlugInUnavailabilityReason)reason plugInInfo:(NSDictionary *)plugInInfo; 156 163 - (NSMenu *)_webView:(WKWebView *)webView contextMenu:(NSMenu *)menu forElement:(_WKContextMenuElementInfo *)element WK_API_AVAILABLE(macosx(10.12)); 157 164 - (NSMenu *)_webView:(WKWebView *)webView contextMenu:(NSMenu *)menu forElement:(_WKContextMenuElementInfo *)element userInfo:(id <NSSecureCoding>)userInfo WK_API_AVAILABLE(macosx(10.12)); -
trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.h
r221503 r221621 103 103 void didNotHandleWheelEvent(WebPageProxy*, const NativeWebWheelEvent&) final; 104 104 void handleAutoplayEvent(WebPageProxy&, WebCore::AutoplayEvent, OptionSet<WebCore::AutoplayEventFlags>) final; 105 void unavailablePluginButtonClicked(WebKit::WebPageProxy&, WKPluginUnavailabilityReason, API::Dictionary&) final; 105 106 void didClickAutoFillButton(WebPageProxy&, API::Object*) final; 106 107 void toolbarsAreVisible(WebKit::WebPageProxy&, Function<void(bool)>&&) final; … … 153 154 bool webViewDidNotHandleWheelEvent : 1; 154 155 bool webViewHandleAutoplayEventWithFlags : 1; 156 bool webViewUnavailablePlugInButtonClicked : 1; 155 157 bool webViewDidClickAutoFillButtonWithUserInfo : 1; 156 158 bool webViewGetToolbarsAreVisibleWithCompletionHandler : 1; -
trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm
r221503 r221621 37 37 #import "WKFrameInfoInternal.h" 38 38 #import "WKNSData.h" 39 #import "WKNSDictionary.h" 39 40 #import "WKNavigationActionInternal.h" 40 41 #import "WKOpenPanelParametersInternal.h" … … 109 110 m_delegateMethods.webViewGetToolbarsAreVisibleWithCompletionHandler = [delegate respondsToSelector:@selector(_webView:getToolbarsAreVisibleWithCompletionHandler:)]; 110 111 m_delegateMethods.webViewDidNotHandleWheelEvent = [delegate respondsToSelector:@selector(_webView:didNotHandleWheelEvent:)]; 112 m_delegateMethods.webViewUnavailablePlugInButtonClicked = [delegate respondsToSelector:@selector(_webView:unavailablePlugInButtonClickedWithReason:plugInInfo:)]; 111 113 m_delegateMethods.webViewHandleAutoplayEventWithFlags = [delegate respondsToSelector:@selector(_webView:handleAutoplayEvent:withFlags:)]; 112 114 m_delegateMethods.webViewDidClickAutoFillButtonWithUserInfo = [delegate respondsToSelector:@selector(_webView:didClickAutoFillButtonWithUserInfo:)]; … … 431 433 } 432 434 435 static _WKPlugInUnavailabilityReason toWKPlugInUnavailabilityReason(WKPluginUnavailabilityReason reason) 436 { 437 switch (reason) { 438 case kWKPluginUnavailabilityReasonPluginMissing: 439 return _WKPlugInUnavailabilityReasonPluginMissing; 440 case kWKPluginUnavailabilityReasonPluginCrashed: 441 return _WKPlugInUnavailabilityReasonPluginCrashed; 442 case kWKPluginUnavailabilityReasonInsecurePluginVersion: 443 return _WKPlugInUnavailabilityReasonInsecurePluginVersion; 444 } 445 ASSERT_NOT_REACHED(); 446 return _WKPlugInUnavailabilityReasonPluginMissing; 447 } 448 449 void UIDelegate::UIClient::unavailablePluginButtonClicked(WebPageProxy&, WKPluginUnavailabilityReason reason, API::Dictionary& plugInInfo) 450 { 451 if (!m_uiDelegate.m_delegateMethods.webViewUnavailablePlugInButtonClicked) 452 return; 453 454 auto delegate = m_uiDelegate.m_delegate.get(); 455 if (!delegate) 456 return; 457 458 [(id <WKUIDelegatePrivate>)delegate _webView:m_uiDelegate.m_webView unavailablePlugInButtonClickedWithReason:toWKPlugInUnavailabilityReason(reason) plugInInfo:wrapper(plugInInfo)]; 459 } 460 433 461 static _WKResourceLimit toWKResourceLimit(WKResourceLimit limit) 434 462 { -
trunk/Source/WebKit/UIProcess/WebPageProxy.cpp
r221503 r221621 4016 4016 MESSAGE_CHECK_URL(pageURLString); 4017 4017 4018 RefPtr<API::Dictionary> pluginInformation;4019 4018 String newMimeType = mimeType; 4020 4019 PluginModuleInfo plugin = m_process->processPool().pluginInfoStore().findPlugin(newMimeType, URL(URL(), pluginURLString)); 4021 pluginInformation = createPluginInformationDictionary(plugin, frameURLString, mimeType, pageURLString, pluginspageAttributeURLString, pluginURLString);4020 auto pluginInformation = createPluginInformationDictionary(plugin, frameURLString, mimeType, pageURLString, pluginspageAttributeURLString, pluginURLString); 4022 4021 4023 4022 WKPluginUnavailabilityReason pluginUnavailabilityReason = kWKPluginUnavailabilityReasonPluginMissing; … … 4036 4035 } 4037 4036 4038 m_uiClient->unavailablePluginButtonClicked( this, pluginUnavailabilityReason, pluginInformation.get());4037 m_uiClient->unavailablePluginButtonClicked(*this, pluginUnavailabilityReason, pluginInformation.get()); 4039 4038 } 4040 4039 #endif // ENABLE(NETSCAPE_PLUGIN_API) -
trunk/Tools/ChangeLog
r221609 r221621 1 2017-09-05 Alex Christensen <achristensen@webkit.org> 2 3 Add WKUIDelegatePrivate equivalent of WKPageUIClient's unavailablePluginButtonClicked 4 https://bugs.webkit.org/show_bug.cgi?id=176274 5 <rdar://problem/29270035> 6 7 Reviewed by Darin Adler. 8 9 * TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm: 10 (-[PluginDelegate _webView:unavailablePluginButtonClickedWithReason:pluginInfo:]): 11 (TEST): 12 1 13 2017-09-05 Carlos Garcia Campos <cgarcia@igalia.com> 2 14 -
trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm
r221505 r221621 31 31 #import "Utilities.h" 32 32 #import "WKWebViewConfigurationExtras.h" 33 #import <WebKit/WKContextPrivateMac.h> 33 34 #import <WebKit/WKPreferencesPrivate.h> 35 #import <WebKit/WKRetainPtr.h> 34 36 #import <WebKit/WKUIDelegatePrivate.h> 35 37 #import <WebKit/WKWebViewPrivate.h> … … 121 123 122 124 ASSERT_EQ(webViewFromDelegateCallback, createdWebView); 125 } 126 127 128 @interface PlugInDelegate : NSObject <WKUIDelegatePrivate> 129 @end 130 131 @implementation PlugInDelegate 132 133 - (void)_webView:(WKWebView *)webView unavailablePlugInButtonClickedWithReason:(_WKPlugInUnavailabilityReason)reason plugInInfo:(NSDictionary *)plugInInfo 134 { 135 ASSERT_EQ(_WKPlugInUnavailabilityReasonPluginMissing, reason); 136 ASSERT_TRUE([@"application/x-shockwave-flash" isEqualToString:[plugInInfo objectForKey:@"PluginInformationMIMEType"]]); 137 done = true; 138 } 139 140 @end 141 142 TEST(WebKit, UnavailablePlugIn) 143 { 144 auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]); 145 [[configuration preferences] _setPlugInsEnabled:YES]; 146 auto delegate = adoptNS([[PlugInDelegate alloc] init]); 147 auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:CGRectMake(0, 0, 800, 600) configuration:configuration.get()]); 148 [webView setUIDelegate:delegate.get()]; 149 [webView synchronouslyLoadHTMLString:@"<object type='application/x-shockwave-flash'/>"]; 150 [webView sendClicksAtPoint:NSMakePoint(210, 600 - 80) numberOfClicks:1]; 151 TestWebKitAPI::Util::run(&done); 123 152 } 124 153
Note: See TracChangeset
for help on using the changeset viewer.