Changeset 163062 in webkit
- Timestamp:
- Jan 29, 2014 6:49:27 PM (10 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 1 added
- 7 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r163061 r163062 1 2014-01-29 Anders Carlsson <andersca@apple.com> 2 3 Add a NavigationState object to keep track of the navigations for a given page 4 https://bugs.webkit.org/show_bug.cgi?id=127884 5 6 Reviewed by Sam Weinig. 7 8 * UIProcess/API/Cocoa/WKNavigation.mm: 9 (-[WKNavigation request]): 10 (-[WKNavigation setRequest:]): 11 * UIProcess/API/Cocoa/WKNavigationInternal.h: 12 * UIProcess/API/Cocoa/WKWebView.mm: 13 (-[WKWebView initWithFrame:configuration:]): 14 (-[WKWebView loadRequest:]): 15 * UIProcess/Cocoa/NavigationState.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKNavigation.mm. 16 * UIProcess/Cocoa/NavigationState.mm: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKNavigation.mm. 17 (WebKit::NavigationState::NavigationState): 18 (WebKit::NavigationState::~NavigationState): 19 (WebKit::NavigationState::createLoadRequestNavigation): 20 * UIProcess/WebPageProxy.cpp: 21 (WebKit::WebPageProxy::loadRequest): 22 * UIProcess/WebPageProxy.h: 23 * WebKit2.xcodeproj/project.pbxproj: 24 1 25 2014-01-29 Gavin Barraclough <barraclough@apple.com> 2 26 -
trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigation.mm
r163053 r163062 35 35 } 36 36 37 - (instancetype)initWithRequest:(NSURLRequest *)request38 {39 if (!(self = [super init]))40 return nil;41 42 _request = adoptNS([request copy]);43 44 return self;45 }46 47 37 - (NSURLRequest *)request 48 38 { … … 50 40 } 51 41 42 - (void)setRequest:(NSURLRequest *)request 43 { 44 _request = adoptNS([request copy]); 45 } 46 52 47 @end 53 48 -
trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigationInternal.h
r163053 r163062 30 30 @interface WKNavigation () 31 31 32 - (instancetype)initWithRequest:(NSURLRequest *)request;32 @property (nonatomic, readwrite, copy) NSURLRequest *request; 33 33 34 34 @end -
trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm
r163053 r163062 29 29 #if WK_API_ENABLED 30 30 31 #import "NavigationState.h" 31 32 #import "WKNavigationInternal.h" 32 33 #import "WKProcessClass.h" … … 56 57 @implementation WKWebView { 57 58 RetainPtr<WKWebViewConfiguration> _configuration; 59 std::unique_ptr<WebKit::NavigationState> _navigationState; 60 58 61 RefPtr<WebKit::WebPageProxy> _page; 59 62 … … 85 88 if (![_configuration processClass]) 86 89 [_configuration setProcessClass:adoptNS([[WKProcessClass alloc] init]).get()]; 90 91 _navigationState = std::make_unique<WebKit::NavigationState>(self); 87 92 88 93 CGRect bounds = self.bounds; … … 124 129 - (WKNavigation *)loadRequest:(NSURLRequest *)request 125 130 { 126 _page->loadRequest(request); 127 128 return [[[WKNavigation alloc] initWithRequest:request] autorelease]; 131 uint64_t navigationID = _page->loadRequest(request); 132 auto navigation = _navigationState->createLoadRequestNavigation(navigationID, request); 133 134 return [navigation.leakRef() autorelease]; 129 135 } 130 136 -
trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.h
r163061 r163062 24 24 */ 25 25 26 #i mport "config.h"27 # import "WKNavigation.h"26 #ifndef NavigationState_h 27 #define NavigationState_h 28 28 29 #import <wtf/HashMap.h> 29 30 #import <wtf/RetainPtr.h> 30 31 31 #if WK_API_ENABLED 32 OBJC_CLASS WKNavigation; 33 OBJC_CLASS WKWebView; 32 34 33 @implementation WKNavigation { 34 RetainPtr<NSURLRequest> _request; 35 } 35 namespace WebKit { 36 36 37 - (instancetype)initWithRequest:(NSURLRequest *)request 38 { 39 if (!(self = [super init]))40 return nil;37 class NavigationState { 38 public: 39 explicit NavigationState(WKWebView *); 40 ~NavigationState(); 41 41 42 _request = adoptNS([request copy]);42 RetainPtr<WKNavigation> createLoadRequestNavigation(uint64_t navigationID, NSURLRequest *); 43 43 44 return self; 45 } 44 private: 45 HashMap<uint64_t, RetainPtr<WKNavigation>> m_navigations; 46 }; 46 47 47 - (NSURLRequest *)request 48 { 49 return _request.get(); 50 } 48 } // namespace WebKit 51 49 52 @end 53 54 #endif 50 #endif // NavigationState_h -
trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm
r163061 r163062 25 25 26 26 #import "config.h" 27 #import " WKNavigation.h"27 #import "NavigationState.h" 28 28 29 #import <wtf/RetainPtr.h>29 #import "WKNavigationInternal.h" 30 30 31 #if WK_API_ENABLED 31 namespace WebKit { 32 32 33 @implementation WKNavigation { 34 RetainPtr<NSURLRequest> _request; 33 NavigationState::NavigationState(WKWebView *webView) 34 { 35 35 } 36 36 37 - (instancetype)initWithRequest:(NSURLRequest *)request 37 NavigationState::~NavigationState() 38 38 { 39 if (!(self = [super init]))40 return nil;41 42 _request = adoptNS([request copy]);43 44 return self;45 39 } 46 40 47 - (NSURLRequest *)request 41 RetainPtr<WKNavigation> NavigationState::createLoadRequestNavigation(uint64_t navigationID, NSURLRequest *request) 48 42 { 49 return _request.get(); 43 ASSERT(!m_navigations.contains(navigationID)); 44 45 RetainPtr<WKNavigation> navigation = adoptNS([[WKNavigation alloc] init]); 46 [navigation setRequest:request]; 47 48 // FIXME: We need to remove the navigation when we're done with it! 49 m_navigations.set(navigationID, navigation); 50 51 return navigation; 50 52 } 51 53 52 @end 53 54 #endif 54 } // namespace WebKit -
trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp
r163061 r163062 609 609 } 610 610 611 void WebPageProxy::loadRequest(const ResourceRequest& request, API::Object* userData) 612 { 611 uint64_t WebPageProxy::loadRequest(const ResourceRequest& request, API::Object* userData) 612 { 613 uint64_t navigationID = generateNavigationID(); 614 613 615 auto transaction = m_pageLoadState.transaction(); 614 616 … … 622 624 if (createdExtension) 623 625 m_process->willAcquireUniversalFileReadSandboxExtension(); 624 m_process->send(Messages::WebPage::LoadRequest( generateNavigationID(), request, sandboxExtensionHandle, WebContextUserMessageEncoder(userData, process())), m_pageID);626 m_process->send(Messages::WebPage::LoadRequest(navigationID, request, sandboxExtensionHandle, WebContextUserMessageEncoder(userData, process())), m_pageID); 625 627 m_process->responsivenessTimer()->start(); 628 629 return navigationID; 626 630 } 627 631 -
trunk/Source/WebKit2/UIProcess/WebPageProxy.h
r163060 r163062 381 381 bool isClosed() const { return m_isClosed; } 382 382 383 voidloadRequest(const WebCore::ResourceRequest&, API::Object* userData = nullptr);383 uint64_t loadRequest(const WebCore::ResourceRequest&, API::Object* userData = nullptr); 384 384 void loadFile(const String& fileURL, const String& resourceDirectoryURL, API::Object* userData = nullptr); 385 385 void loadData(API::Data*, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData = nullptr); -
trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj
r163053 r163062 292 292 1AB8A1F818400BB800E9AE69 /* WKPageContextMenuClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB8A1F718400BB800E9AE69 /* WKPageContextMenuClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; 293 293 1ABC3DF11899C6B6004F0626 /* WKNavigationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ABC3DF01899C6B6004F0626 /* WKNavigationInternal.h */; }; 294 1ABC3DF51899E437004F0626 /* NavigationState.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1ABC3DF31899E437004F0626 /* NavigationState.mm */; }; 295 1ABC3DF61899E437004F0626 /* NavigationState.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ABC3DF41899E437004F0626 /* NavigationState.h */; }; 294 296 1AC1336718565B5700F3EC05 /* UserData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AC1336518565B5700F3EC05 /* UserData.cpp */; }; 295 297 1AC1336818565B5700F3EC05 /* UserData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AC1336618565B5700F3EC05 /* UserData.h */; }; … … 1937 1939 1AB8A1F718400BB800E9AE69 /* WKPageContextMenuClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKPageContextMenuClient.h; sourceTree = "<group>"; }; 1938 1940 1ABC3DF01899C6B6004F0626 /* WKNavigationInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKNavigationInternal.h; sourceTree = "<group>"; }; 1941 1ABC3DF31899E437004F0626 /* NavigationState.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = NavigationState.mm; sourceTree = "<group>"; }; 1942 1ABC3DF41899E437004F0626 /* NavigationState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NavigationState.h; sourceTree = "<group>"; }; 1939 1943 1AC1336518565B5700F3EC05 /* UserData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UserData.cpp; sourceTree = "<group>"; }; 1940 1944 1AC1336618565B5700F3EC05 /* UserData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserData.h; sourceTree = "<group>"; }; … … 3951 3955 sourceTree = "<group>"; 3952 3956 }; 3957 1ABC3DF21899E415004F0626 /* Cocoa */ = { 3958 isa = PBXGroup; 3959 children = ( 3960 1ABC3DF41899E437004F0626 /* NavigationState.h */, 3961 1ABC3DF31899E437004F0626 /* NavigationState.mm */, 3962 ); 3963 path = Cocoa; 3964 sourceTree = "<group>"; 3965 }; 3953 3966 1AE00D6818327C1200087DD7 /* IPC */ = { 3954 3967 isa = PBXGroup; … … 4878 4891 512F588D12A8836F00629530 /* Authentication */, 4879 4892 51B3004D12529CF5000B5CA0 /* cf */, 4893 1ABC3DF21899E415004F0626 /* Cocoa */, 4880 4894 517DD5BB180DA7C40081660B /* Databases */, 4881 4895 1AB7D4C71288AA9A00CFD08C /* Downloads */, … … 6173 6187 0FB659231208B4DB0044816C /* DrawingAreaInfo.h in Headers */, 6174 6188 1A64229A12DD029200CAAE2C /* DrawingAreaMessages.h in Headers */, 6189 1ABC3DF61899E437004F0626 /* NavigationState.h in Headers */, 6175 6190 BC2652171182608100243E12 /* DrawingAreaProxy.h in Headers */, 6176 6191 1A64230912DD09EB00CAAE2C /* DrawingAreaProxyMessages.h in Headers */, … … 8064 8079 BC407601124FF0270068F20A /* WKNumber.cpp in Sources */, 8065 8080 7CD5EBB81746A15B000C1C45 /* WKObjCTypeWrapperRef.mm in Sources */, 8081 1ABC3DF51899E437004F0626 /* NavigationState.mm in Sources */, 8066 8082 BC85806312B8505700EDEB2E /* WKOpenPanelParameters.cpp in Sources */, 8067 8083 BC85806212B8505700EDEB2E /* WKOpenPanelResultListener.cpp in Sources */,
Note: See TracChangeset
for help on using the changeset viewer.