WebKit Bugzilla
Attachment 356765 Details for
Bug 192473
: WKWebProcessPlugInLoadDelegate should have API for saying which rendering events it wants to listen for
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
patch
a-backup.diff (text/plain), 19.52 KB, created by
Saam Barati
on 2018-12-06 16:48:02 PST
(
hide
)
Description:
patch
Filename:
MIME Type:
Creator:
Saam Barati
Created:
2018-12-06 16:48:02 PST
Size:
19.52 KB
patch
obsolete
>Index: Source/WebKit/ChangeLog >=================================================================== >--- Source/WebKit/ChangeLog (revision 238927) >+++ Source/WebKit/ChangeLog (working copy) >@@ -1,3 +1,14 @@ >+2018-12-06 Saam Barati <sbarati@apple.com> >+ >+ WKWebProcessPlugInLoadDelegate should have API for saying which rendering events it wants to listen for >+ https://bugs.webkit.org/show_bug.cgi?id=192473 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInLoadDelegate.h: >+ * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm: >+ (PageLoaderClient::layoutMilestones const): >+ > 2018-12-05 Ryosuke Niwa <rniwa@webkit.org> > > REGRESSION(PSON): Process swapping code doesn't set DisplayID in WebContent process >Index: Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInLoadDelegate.h >=================================================================== >--- Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInLoadDelegate.h (revision 238927) >+++ Source/WebKit/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInLoadDelegate.h (working copy) >@@ -53,6 +53,7 @@ > - (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController*)controller didLayoutForFrame:(WKWebProcessPlugInFrame *)frame; > - (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController*)controller renderingProgressDidChange:(_WKRenderingProgressEvents)events; > - (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController*)controller didFirstVisuallyNonEmptyLayoutForFrame:(WKWebProcessPlugInFrame *)frame; >+- (_WKRenderingProgressEvents)getLayoutMilestonesWithWebProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController*)controller; > > // Resource loading > >Index: Source/WebKit/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm >=================================================================== >--- Source/WebKit/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm (revision 238927) >+++ Source/WebKit/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm (working copy) >@@ -110,6 +110,7 @@ public: > void didFirstVisuallyNonEmptyLayoutForFrame(WebKit::WebPage&, WebKit::WebFrame&, RefPtr<API::Object>&) override; > void didLayoutForFrame(WebKit::WebPage&, WebKit::WebFrame&) override; > void didReachLayoutMilestone(WebKit::WebPage&, OptionSet<WebCore::LayoutMilestone>, RefPtr<API::Object>&) override; >+ OptionSet<WebCore::LayoutMilestone> layoutMilestones() const override; > > void didHandleOnloadEventsForFrame(WebKit::WebPage&, WebKit::WebFrame&) override; > >@@ -232,6 +233,16 @@ void PageLoaderClient::didFirstVisuallyN > [loadDelegate() webProcessPlugInBrowserContextController:pluginContextController() didFirstVisuallyNonEmptyLayoutForFrame:wrapper(frame)]; > } > >+OptionSet<WebCore::LayoutMilestone> PageLoaderClient::layoutMilestones() const >+{ >+ if ([loadDelegate() respondsToSelector:@selector(getLayoutMilestonesWithWebProcessPlugInBrowserContextController:)]) { >+ _WKRenderingProgressEvents milestones = [loadDelegate() getLayoutMilestonesWithWebProcessPlugInBrowserContextController:pluginContextController()]; >+ return WebKit::toLayoutMilestones(static_cast<WKLayoutMilestones>(milestones)); >+ } >+ >+ return { }; >+} >+ > void PageLoaderClient::didHandleOnloadEventsForFrame(WebKit::WebPage&, WebKit::WebFrame& frame) > { > if ([loadDelegate() respondsToSelector:@selector(webProcessPlugInBrowserContextController:didHandleOnloadEventsForFrame:)]) >Index: Tools/ChangeLog >=================================================================== >--- Tools/ChangeLog (revision 238945) >+++ Tools/ChangeLog (working copy) >@@ -1,3 +1,20 @@ >+2018-12-06 Saam Barati <sbarati@apple.com> >+ >+ WKWebProcessPlugInLoadDelegate should have API for saying which rendering events it wants to listen for >+ https://bugs.webkit.org/show_bug.cgi?id=192473 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: >+ * TestWebKitAPI/Tests/WebKitCocoa/RenderingProgress.mm: Added. >+ (-[DidFirstMeaningfulPaintRemoteObject didFirstMeaningfulPaint]): >+ (TEST): >+ * TestWebKitAPI/Tests/WebKitCocoa/RenderingProgressPlugIn.mm: Added. >+ (-[RenderingProgressPlugIn webProcessPlugIn:didCreateBrowserContextController:]): >+ (-[RenderingProgressPlugIn getLayoutMilestonesWithWebProcessPlugInBrowserContextController:]): >+ (-[RenderingProgressPlugIn webProcessPlugInBrowserContextController:renderingProgressDidChange:]): >+ * TestWebKitAPI/Tests/WebKitCocoa/RenderingProgressProtocol.h: Added. >+ > 2018-12-06 Jonathan Bedard <jbedard@apple.com> > > REGRESSION: run-webkit-tests may fail when using booted simulators >Index: Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj >=================================================================== >--- Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (revision 238927) >+++ Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (working copy) >@@ -235,9 +235,11 @@ > 51E6A8961D2F1CA700C004B6 /* LocalStorageClear.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 51E6A8951D2F1C7700C004B6 /* LocalStorageClear.html */; }; > 51EB12941FDF052500A5A1BD /* ServiceWorkerBasic.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51EB12931FDF050500A5A1BD /* ServiceWorkerBasic.mm */; }; > 520BCF4C141EB09E00937EA8 /* WebArchive_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 520BCF4A141EB09E00937EA8 /* WebArchive_Bundle.cpp */; }; >+ 5245178721B9F57B0082CB34 /* RenderingProgressPlugIn.mm in Sources */ = {isa = PBXBuildFile; fileRef = 52D5D6BE21B9F1B20046ABA6 /* RenderingProgressPlugIn.mm */; }; > 524BBC9E19DF72C0002F1AF1 /* file-with-video.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 524BBC9B19DF3714002F1AF1 /* file-with-video.html */; }; > 524BBCA119E30C77002F1AF1 /* test.mp4 in Copy Resources */ = {isa = PBXBuildFile; fileRef = 524BBCA019E30C63002F1AF1 /* test.mp4 */; }; > 52B8CF9815868D9100281053 /* SetDocumentURI.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 52B8CF9415868CF000281053 /* SetDocumentURI.html */; }; >+ 52D5D6C021B9F1B30046ABA6 /* RenderingProgress.mm in Sources */ = {isa = PBXBuildFile; fileRef = 52D5D6BD21B9F1B20046ABA6 /* RenderingProgress.mm */; }; > 52D673EE1AFB127300FA19FE /* WKPageCopySessionStateWithFiltering.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 52D673EC1AFB126800FA19FE /* WKPageCopySessionStateWithFiltering.cpp */; }; > 52E5CE4914D21EAB003B2BD8 /* ParentFrame_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 52E5CE4814D21EAB003B2BD8 /* ParentFrame_Bundle.cpp */; }; > 5311BD5E1EA9490E00525281 /* ThreadMessages.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5311BD5D1EA9490D00525281 /* ThreadMessages.cpp */; }; >@@ -1578,6 +1580,9 @@ > 52B8CF9415868CF000281053 /* SetDocumentURI.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = SetDocumentURI.html; sourceTree = "<group>"; }; > 52B8CF9515868CF000281053 /* SetDocumentURI.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SetDocumentURI.mm; sourceTree = "<group>"; }; > 52CB47401448FB9300873995 /* LoadAlternateHTMLStringWithNonDirectoryURL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LoadAlternateHTMLStringWithNonDirectoryURL.cpp; sourceTree = "<group>"; }; >+ 52D5D6BD21B9F1B20046ABA6 /* RenderingProgress.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RenderingProgress.mm; sourceTree = "<group>"; }; >+ 52D5D6BE21B9F1B20046ABA6 /* RenderingProgressPlugIn.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RenderingProgressPlugIn.mm; sourceTree = "<group>"; }; >+ 52D5D6BF21B9F1B20046ABA6 /* RenderingProgressProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderingProgressProtocol.h; sourceTree = "<group>"; }; > 52D673EC1AFB126800FA19FE /* WKPageCopySessionStateWithFiltering.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKPageCopySessionStateWithFiltering.cpp; sourceTree = "<group>"; }; > 52E5CE4514D21E9D003B2BD8 /* ParentFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParentFrame.cpp; sourceTree = "<group>"; }; > 52E5CE4814D21EAB003B2BD8 /* ParentFrame_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParentFrame_Bundle.cpp; sourceTree = "<group>"; }; >@@ -2495,6 +2500,9 @@ > A12DDBF91E836F0700CF6CAE /* RenderedImageWithOptions.mm */, > A12DDBFC1E836FF100CF6CAE /* RenderedImageWithOptionsPlugIn.mm */, > A12DDC011E8374F500CF6CAE /* RenderedImageWithOptionsProtocol.h */, >+ 52D5D6BD21B9F1B20046ABA6 /* RenderingProgress.mm */, >+ 52D5D6BE21B9F1B20046ABA6 /* RenderingProgressPlugIn.mm */, >+ 52D5D6BF21B9F1B20046ABA6 /* RenderingProgressProtocol.h */, > CD9E292B1C90A71F000BB800 /* RequiresUserActionForPlayback.mm */, > 51C8E1A41F26AC5400BF731B /* ResourceLoadStatistics.mm */, > 5CCB10E02134579D00AC5AF0 /* ResponsivenessTimer.mm */, >@@ -3913,6 +3921,7 @@ > A155022A1E05020B00A24C57 /* DuplicateCompletionHandlerCalls.mm in Sources */, > 7CCE7EBE1A411A7E00447C4C /* DynamicDeviceScaleFactor.mm in Sources */, > 5C0BF8921DD599B600B00328 /* EarlyKVOCrash.mm in Sources */, >+ 52D5D6C021B9F1B30046ABA6 /* RenderingProgress.mm in Sources */, > F44D064A1F3962F2001A0E29 /* EditingTestHarness.mm in Sources */, > 7CCE7EE01A411A9A00447C4C /* EditorCommands.mm in Sources */, > F44D06471F39627A001A0E29 /* EditorStateTests.mm in Sources */, >@@ -4282,6 +4291,7 @@ > 0E404A8C2166DE0A008271BA /* InjectedBundleNodeHandleIsSelectElement.mm in Sources */, > 79C5D431209D768300F1E7CA /* InjectedBundleNodeHandleIsTextField.mm in Sources */, > F44C7A0020F9EEBF0014478C /* ParserYieldTokenPlugIn.mm in Sources */, >+ 5245178721B9F57B0082CB34 /* RenderingProgressPlugIn.mm in Sources */, > A13EBBAB1B87434600097110 /* PlatformUtilitiesCocoa.mm in Sources */, > 1A4F81CF1BDFFD53004E672E /* RemoteObjectRegistryPlugIn.mm in Sources */, > A12DDC021E837C2400CF6CAE /* RenderedImageWithOptionsPlugIn.mm in Sources */, >Index: Tools/TestWebKitAPI/Tests/WebKitCocoa/RenderingProgress.mm >=================================================================== >--- Tools/TestWebKitAPI/Tests/WebKitCocoa/RenderingProgress.mm (nonexistent) >+++ Tools/TestWebKitAPI/Tests/WebKitCocoa/RenderingProgress.mm (working copy) >@@ -0,0 +1,77 @@ >+/* >+ * Copyright (C) 2018 Apple Inc. All rights reserved. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#import "config.h" >+#import <WebKit/WKFoundation.h> >+ >+#if WK_API_ENABLED >+ >+#import "PlatformUtilities.h" >+#import "RenderingProgressProtocol.h" >+#import "Test.h" >+#import "TestNavigationDelegate.h" >+#import "TestWKWebView.h" >+#import "WKWebViewConfigurationExtras.h" >+#import <WebKit/WKProcessPoolPrivate.h> >+#import <WebKit/WKUserContentControllerPrivate.h> >+#import <WebKit/WKUserScriptPrivate.h> >+#import <WebKit/WKWebViewPrivate.h> >+#import <WebKit/WebKit.h> >+#import <WebKit/_WKRemoteObjectInterface.h> >+#import <WebKit/_WKRemoteObjectRegistry.h> >+#import <wtf/RetainPtr.h> >+ >+static bool didObserveFirstMeaningfulPaint; >+ >+@interface DidFirstMeaningfulPaintRemoteObject : NSObject <DidFirstMeaningfulPaintProtocol> >+@end >+ >+@implementation DidFirstMeaningfulPaintRemoteObject >+- (void)didFirstMeaningfulPaint >+{ >+ didObserveFirstMeaningfulPaint = true; >+} >+@end >+ >+TEST(RenderingProgress, FirstMeaningfulPaint) >+{ >+ NSString * const testPlugInClassName = @"RenderingProgressPlugIn"; >+ >+ RetainPtr<WKWebViewConfiguration> configuration = retainPtr([WKWebViewConfiguration _test_configurationWithTestPlugInClassName:testPlugInClassName]); >+ >+ RetainPtr<TestWKWebView> webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]); >+ >+ RetainPtr<DidFirstMeaningfulPaintRemoteObject> object = adoptNS([[DidFirstMeaningfulPaintRemoteObject alloc] init]); >+ _WKRemoteObjectInterface *interface = [_WKRemoteObjectInterface remoteObjectInterfaceWithProtocol:@protocol(DidFirstMeaningfulPaintProtocol)]; >+ [[webView _remoteObjectRegistry] registerExportedObject:object.get() interface:interface]; >+ >+ didObserveFirstMeaningfulPaint = false; >+ >+ [webView loadHTMLString:@"<body style='background-color: red;'></body>" baseURL:nil]; >+ >+ TestWebKitAPI::Util::run(&didObserveFirstMeaningfulPaint); >+} >+ >+#endif >Index: Tools/TestWebKitAPI/Tests/WebKitCocoa/RenderingProgressPlugIn.mm >=================================================================== >--- Tools/TestWebKitAPI/Tests/WebKitCocoa/RenderingProgressPlugIn.mm (nonexistent) >+++ Tools/TestWebKitAPI/Tests/WebKitCocoa/RenderingProgressPlugIn.mm (working copy) >@@ -0,0 +1,77 @@ >+/* >+ * Copyright (C) 2018 Apple Inc. All rights reserved. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#import "config.h" >+ >+#if WK_API_ENABLED >+ >+#import "PlatformUtilities.h" >+#import "RenderingProgressProtocol.h" >+#import <WebKit/WKWebProcessPlugIn.h> >+#import <WebKit/WKWebProcessPlugInBrowserContextController.h> >+#import <WebKit/WKWebProcessPlugInBrowserContextControllerPrivate.h> >+#import <WebKit/WKWebProcessPlugInFrame.h> >+#import <WebKit/WKWebProcessPlugInLoadDelegate.h> >+#import <WebKit/WKWebProcessPlugInScriptWorld.h> >+#import <WebKit/_WKRemoteObjectInterface.h> >+#import <WebKit/_WKRemoteObjectRegistry.h> >+#import <wtf/RetainPtr.h> >+ >+@interface RenderingProgressPlugIn : NSObject <WKWebProcessPlugIn, WKWebProcessPlugInLoadDelegate> >+@end >+ >+@implementation RenderingProgressPlugIn { >+ RetainPtr<WKWebProcessPlugInBrowserContextController> _browserContextController; >+ RetainPtr<WKWebProcessPlugInController> _plugInController; >+ RetainPtr<id <DidFirstMeaningfulPaintProtocol>> _remoteObject; >+} >+ >+- (void)webProcessPlugIn:(WKWebProcessPlugInController *)plugInController didCreateBrowserContextController:(WKWebProcessPlugInBrowserContextController *)browserContextController >+{ >+ ASSERT(!_browserContextController); >+ ASSERT(!_plugInController); >+ _browserContextController = browserContextController; >+ _plugInController = plugInController; >+ >+ _WKRemoteObjectInterface *interface = [_WKRemoteObjectInterface remoteObjectInterfaceWithProtocol:@protocol(DidFirstMeaningfulPaintProtocol)]; >+ _remoteObject = [[browserContextController _remoteObjectRegistry] remoteObjectProxyWithInterface:interface]; >+ >+ [_browserContextController setLoadDelegate:self]; >+} >+ >+- (_WKRenderingProgressEvents)getLayoutMilestonesWithWebProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController*)controller >+{ >+ return _WKRenderingProgressEventFirstMeaningfulPaint; >+} >+ >+- (void)webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController*)controller renderingProgressDidChange:(_WKRenderingProgressEvents)events >+{ >+ if (events & _WKRenderingProgressEventFirstMeaningfulPaint) >+ [_remoteObject didFirstMeaningfulPaint]; >+} >+ >+@end >+ >+#endif // WK_API_ENABLED >Index: Tools/TestWebKitAPI/Tests/WebKitCocoa/RenderingProgressProtocol.h >=================================================================== >--- Tools/TestWebKitAPI/Tests/WebKitCocoa/RenderingProgressProtocol.h (nonexistent) >+++ Tools/TestWebKitAPI/Tests/WebKitCocoa/RenderingProgressProtocol.h (working copy) >@@ -0,0 +1,34 @@ >+/* >+ * Copyright (C) 2018 Apple Inc. All rights reserved. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#import <WebKit/WKFoundation.h> >+ >+#if WK_API_ENABLED >+ >+@protocol DidFirstMeaningfulPaintProtocol <NSObject> >+- (void)didFirstMeaningfulPaint; >+@end >+ >+#endif
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 192473
:
356765
|
356771
|
356831