Changeset 217910 in webkit
- Timestamp:
- Jun 7, 2017 4:27:14 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r217901 r217910 1 2017-06-07 Youenn Fablet <youenn@apple.com> 2 3 getUserMedia is prompting too often 4 https://bugs.webkit.org/show_bug.cgi?id=172859 5 <rdar://problem/32589950> 6 7 Reviewed by Eric Carlson. 8 9 * fast/mediastream/getUserMedia-grant-persistency-expected.txt: Added. 10 * fast/mediastream/getUserMedia-grant-persistency-reload-expected.txt: Added. 11 * fast/mediastream/getUserMedia-grant-persistency-reload.html: Added. 12 * fast/mediastream/getUserMedia-grant-persistency.html: Added. 13 * http/tests/media/media-stream/get-user-media-prompt-expected.txt: 14 * http/tests/media/media-stream/get-user-media-prompt.html: Last gum does not need a prompt anymore. 15 1 16 2017-06-07 Daniel Bates <dabates@apple.com> 2 17 -
trunk/LayoutTests/http/tests/media/media-stream/get-user-media-prompt-expected.txt
r217081 r217910 4 4 5 5 6 PASS numberOfTimesGetUserMedia HasBeenCalled() is 06 PASS numberOfTimesGetUserMediaPromptHasBeenCalled() is 0 7 7 8 8 ** Request an audio-only stream, the user should be prompted ** 9 9 PASS navigator.mediaDevices.getUserMedia({audio:true}).then(gotStream1); did not throw exception. 10 PASS numberOfTimesGetUserMedia HasBeenCalled() is 110 PASS numberOfTimesGetUserMediaPromptHasBeenCalled() is 1 11 11 PASS stream.getAudioTracks().length is 1 12 12 PASS stream.getVideoTracks().length is 0 … … 14 14 ** Request a video-only stream, the user should be prompted ** 15 15 PASS navigator.mediaDevices.getUserMedia({video:true}).then(gotStream2); did not throw exception. 16 PASS numberOfTimesGetUserMedia HasBeenCalled() is 216 PASS numberOfTimesGetUserMediaPromptHasBeenCalled() is 2 17 17 PASS stream.getAudioTracks().length is 0 18 18 PASS stream.getVideoTracks().length is 1 19 19 20 ** Request a stream with video and audio, the user should be prompted again **20 ** Request a stream with video and audio, the user should not be prompted again ** 21 21 PASS navigator.mediaDevices.getUserMedia({audio:true, video:true}).then(gotStream3); did not throw exception. 22 PASS numberOfTimesGetUserMedia HasBeenCalled() is 322 PASS numberOfTimesGetUserMediaPromptHasBeenCalled() is 2 23 23 PASS stream.getAudioTracks().length is 1 24 24 PASS stream.getVideoTracks().length is 1 -
trunk/LayoutTests/http/tests/media/media-stream/get-user-media-prompt.html
r217081 r217910 8 8 <script> 9 9 10 function numberOfTimesGetUserMedia HasBeenCalled()10 function numberOfTimesGetUserMediaPromptHasBeenCalled() 11 11 { 12 12 return testRunner.userMediaPermissionRequestCountForOrigin(document.location.href, document.location.href); … … 16 16 { 17 17 stream = s; 18 shouldBe("numberOfTimesGetUserMedia HasBeenCalled()", "3");18 shouldBe("numberOfTimesGetUserMediaPromptHasBeenCalled()", "2"); 19 19 shouldBe("stream.getAudioTracks().length", "1"); 20 20 shouldBe("stream.getVideoTracks().length", "1"); … … 27 27 { 28 28 stream = s; 29 shouldBe("numberOfTimesGetUserMedia HasBeenCalled()", "2");29 shouldBe("numberOfTimesGetUserMediaPromptHasBeenCalled()", "2"); 30 30 shouldBe("stream.getAudioTracks().length", "0"); 31 31 shouldBe("stream.getVideoTracks().length", "1"); 32 32 33 debug("<br>** Request a stream with video and audio, the user should be prompted again **");33 debug("<br>** Request a stream with video and audio, the user should not be prompted again **"); 34 34 shouldNotThrow("navigator.mediaDevices.getUserMedia({audio:true, video:true}).then(gotStream3);"); 35 35 } … … 38 38 { 39 39 stream = s; 40 shouldBe("numberOfTimesGetUserMedia HasBeenCalled()", "1");40 shouldBe("numberOfTimesGetUserMediaPromptHasBeenCalled()", "1"); 41 41 shouldBe("stream.getAudioTracks().length", "1"); 42 42 shouldBe("stream.getVideoTracks().length", "0"); … … 51 51 52 52 testRunner.resetUserMediaPermissionRequestCountForOrigin(document.location.href, document.location.href); 53 shouldBe("numberOfTimesGetUserMedia HasBeenCalled()", "0");53 shouldBe("numberOfTimesGetUserMediaPromptHasBeenCalled()", "0"); 54 54 55 55 debug("<br>** Request an audio-only stream, the user should be prompted **"); -
trunk/Source/WebCore/ChangeLog
r217907 r217910 1 2017-06-07 Youenn Fablet <youenn@apple.com> 2 3 getUserMedia is prompting too often 4 https://bugs.webkit.org/show_bug.cgi?id=172859 5 <rdar://problem/32589950> 6 7 Reviewed by Eric Carlson. 8 9 Tests: fast/mediastream/getUserMedia-grant-persistency-reload.html 10 fast/mediastream/getUserMedia-grant-persistency.html 11 12 * loader/FrameLoaderClient.h: 13 * page/Frame.cpp: 14 (WebCore::Frame::setDocument): Allows notifying of change of main frame document. 15 UIProcess will use that to remove unneeded previously granted gum permission. 16 1 17 2017-06-07 Chris Dumez <cdumez@apple.com> 2 18 -
trunk/Source/WebCore/loader/FrameLoaderClient.h
r214266 r217910 153 153 virtual void dispatchDidCancelClientRedirect() = 0; 154 154 virtual void dispatchWillPerformClientRedirect(const URL&, double interval, double fireDate) = 0; 155 virtual void dispatchDidChangeMainDocument() { } 155 156 virtual void dispatchDidNavigateWithinPage() { } 156 157 virtual void dispatchDidChangeLocationWithinPage() = 0; -
trunk/Source/WebCore/page/Frame.cpp
r215955 r217910 272 272 273 273 m_documentIsBeingReplaced = true; 274 274 275 if (isMainFrame()) 276 m_loader.client().dispatchDidChangeMainDocument(); 277 275 278 if (m_doc && m_doc->pageCacheState() != Document::InPageCache) 276 279 m_doc->prepareForDestruction(); -
trunk/Source/WebKit2/ChangeLog
r217908 r217910 1 2017-06-07 Youenn Fablet <youenn@apple.com> 2 3 getUserMedia is prompting too often 4 https://bugs.webkit.org/show_bug.cgi?id=172859 5 <rdar://problem/32589950> 6 7 Reviewed by Eric Carlson. 8 9 Introduce a storage of granted requests to skip prompting when needed. 10 This is a partial implementation as granted requests should not happen for background tabs. 11 This will be covered in a follow-up patch. 12 Covered by manual tests. 13 14 A granted request keeps its mainFrameID. 15 Whenever the document of the main frame changes, the granted requests for that mainFrameID will be removed. 16 This handles the case of navigating, reloading... while still supporting the case of granting getUserMedia after in page navigation. 17 18 * UIProcess/UserMediaPermissionRequestManagerProxy.cpp: 19 (WebKit::UserMediaPermissionRequestManagerProxy::createRequest): 20 (WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted): 21 (WebKit::UserMediaPermissionRequestManagerProxy::removeGrantedAccess): 22 (WebKit::UserMediaPermissionRequestManagerProxy::searchForGrantedRequest): 23 (WebKit::UserMediaPermissionRequestManagerProxy::grantAccess): 24 (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame): 25 * UIProcess/UserMediaPermissionRequestManagerProxy.h: 26 * UIProcess/UserMediaPermissionRequestProxy.cpp: 27 (WebKit::UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy): 28 * UIProcess/UserMediaPermissionRequestProxy.h: 29 (WebKit::UserMediaPermissionRequestProxy::create): 30 (WebKit::UserMediaPermissionRequestProxy::mainFrameID): 31 (WebKit::UserMediaPermissionRequestProxy::frameID): 32 (WebKit::UserMediaPermissionRequestProxy::userMediaDocumentSecurityOrigin): 33 * UIProcess/WebPageProxy.cpp: 34 (WebKit::WebPageProxy::didChangeMainDocument): 35 (WebKit::WebPageProxy::backForwardGoToItem): 36 * UIProcess/WebPageProxy.h: 37 * UIProcess/WebPageProxy.messages.in: 38 * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: 39 (WebKit::WebFrameLoaderClient::dispatchDidChangeMainDocument): 40 * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: 41 1 42 2017-06-07 Dan Bernstein <mitz@apple.com> 2 43 -
trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp
r217837 r217910 80 80 } 81 81 82 Ref<UserMediaPermissionRequestProxy> UserMediaPermissionRequestManagerProxy::createRequest(uint64_t userMediaID, uint64_t frameID, Ref<WebCore::SecurityOrigin>&& userMediaDocumentOrigin, Ref<WebCore::SecurityOrigin>&& topLevelDocumentOrigin, Vector<String>&& audioDeviceUIDs, Vector<String>&& videoDeviceUIDs, String&& deviceIDHashSalt)83 { 84 auto request = UserMediaPermissionRequestProxy::create(*this, userMediaID, frameID, WTFMove(userMediaDocumentOrigin), WTFMove(topLevelDocumentOrigin), WTFMove(audioDeviceUIDs), WTFMove(videoDeviceUIDs), WTFMove(deviceIDHashSalt));82 Ref<UserMediaPermissionRequestProxy> UserMediaPermissionRequestManagerProxy::createRequest(uint64_t userMediaID, uint64_t mainFrameID, uint64_t frameID, Ref<WebCore::SecurityOrigin>&& userMediaDocumentOrigin, Ref<WebCore::SecurityOrigin>&& topLevelDocumentOrigin, Vector<String>&& audioDeviceUIDs, Vector<String>&& videoDeviceUIDs, String&& deviceIDHashSalt) 83 { 84 auto request = UserMediaPermissionRequestProxy::create(*this, userMediaID, mainFrameID, frameID, WTFMove(userMediaDocumentOrigin), WTFMove(topLevelDocumentOrigin), WTFMove(audioDeviceUIDs), WTFMove(videoDeviceUIDs), WTFMove(deviceIDHashSalt)); 85 85 m_pendingUserMediaRequests.add(userMediaID, request.ptr()); 86 86 return request; … … 155 155 return; 156 156 157 UserMediaProcessManager::singleton().willCreateMediaStream(*this, !audioDeviceUID.isEmpty(), !videoDeviceUID.isEmpty());158 m_ page.process().send(Messages::WebPage::UserMediaAccessWasGranted(userMediaID, audioDeviceUID, videoDeviceUID, request->deviceIdentifierHashSalt()), m_page.pageID());157 grantAccess(userMediaID, audioDeviceUID, videoDeviceUID, request->deviceIdentifierHashSalt()); 158 m_grantedRequests.append(request.releaseNonNull()); 159 159 #else 160 160 UNUSED_PARAM(userMediaID); … … 164 164 } 165 165 166 #if ENABLE(MEDIA_STREAM) 167 void UserMediaPermissionRequestManagerProxy::removeGrantedAccess(uint64_t frameID) 168 { 169 m_grantedRequests.removeAllMatching([frameID](const auto& grantedRequest) { 170 return grantedRequest->mainFrameID() == frameID; 171 }); 172 } 173 174 const UserMediaPermissionRequestProxy* UserMediaPermissionRequestManagerProxy::searchForGrantedRequest(uint64_t frameID, const WebCore::SecurityOrigin& userMediaDocumentOrigin, const WebCore::SecurityOrigin& topLevelDocumentOrigin, bool needsAudio, bool needsVideo) const 175 { 176 bool checkForAudio = needsAudio; 177 bool checkForVideo = needsVideo; 178 for (const auto& grantedRequest : m_grantedRequests) { 179 if (!grantedRequest->userMediaDocumentSecurityOrigin().isSameSchemeHostPort(userMediaDocumentOrigin)) 180 continue; 181 if (!grantedRequest->topLevelDocumentSecurityOrigin().isSameSchemeHostPort(topLevelDocumentOrigin)) 182 continue; 183 if (grantedRequest->frameID() != frameID) 184 continue; 185 186 if (!grantedRequest->videoDeviceUIDs().isEmpty()) 187 checkForVideo = false; 188 189 if (!grantedRequest->audioDeviceUIDs().isEmpty()) 190 checkForAudio = false; 191 192 if (checkForVideo || checkForAudio) 193 continue; 194 195 return grantedRequest.ptr(); 196 } 197 return nullptr; 198 } 199 200 void UserMediaPermissionRequestManagerProxy::grantAccess(uint64_t userMediaID, const String& audioDeviceUID, const String& videoDeviceUID, const String& deviceIdentifierHashSalt) 201 { 202 UserMediaProcessManager::singleton().willCreateMediaStream(*this, !audioDeviceUID.isEmpty(), !videoDeviceUID.isEmpty()); 203 m_page.process().send(Messages::WebPage::UserMediaAccessWasGranted(userMediaID, audioDeviceUID, videoDeviceUID, deviceIdentifierHashSalt), m_page.pageID()); 204 } 205 #endif 206 166 207 void UserMediaPermissionRequestManagerProxy::rejectionTimerFired() 167 208 { … … 198 239 199 240 WebCore::RealtimeMediaSourceCenter::ValidConstraintsHandler validHandler = [this, userMediaID, frameID, userMediaDocumentOrigin = userMediaDocumentOrigin.copyRef(), topLevelDocumentOrigin = topLevelDocumentOrigin.copyRef()](Vector<String>&& audioDeviceUIDs, Vector<String>&& videoDeviceUIDs, String&& deviceIdentifierHashSalt) mutable { 200 if (!m_page.isValid() )241 if (!m_page.isValid() || !m_page.mainFrame()) 201 242 return; 202 243 … … 206 247 } 207 248 249 auto* grantedRequest = searchForGrantedRequest(frameID, userMediaDocumentOrigin.get(), topLevelDocumentOrigin.get(), !audioDeviceUIDs.isEmpty(), !videoDeviceUIDs.isEmpty()); 250 if (grantedRequest) { 251 // We select the first available devices, but the current client API allows client to select which device to pick. 252 // FIXME: Remove the possiblity for the client to do the device selection. 253 grantAccess(userMediaID, audioDeviceUIDs.isEmpty() ? String() : audioDeviceUIDs[0], videoDeviceUIDs.isEmpty() ? String() : videoDeviceUIDs[0], grantedRequest->deviceIdentifierHashSalt()); 254 return; 255 } 208 256 auto userMediaOrigin = API::SecurityOrigin::create(userMediaDocumentOrigin.get()); 209 257 auto topLevelOrigin = API::SecurityOrigin::create(topLevelDocumentOrigin.get()); 210 auto request = createRequest(userMediaID, frameID, WTFMove(userMediaDocumentOrigin), WTFMove(topLevelDocumentOrigin), WTFMove(audioDeviceUIDs), WTFMove(videoDeviceUIDs), WTFMove(deviceIdentifierHashSalt)); 258 259 auto request = createRequest(userMediaID, m_page.mainFrame()->frameID(), frameID, WTFMove(userMediaDocumentOrigin), WTFMove(topLevelDocumentOrigin), WTFMove(audioDeviceUIDs), WTFMove(videoDeviceUIDs), WTFMove(deviceIdentifierHashSalt)); 211 260 212 261 if (m_page.preferences().mockCaptureDevicesEnabled() && !m_page.preferences().mockCaptureDevicesPromptEnabled()) { -
trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.h
r217081 r217910 48 48 void requestUserMediaPermissionForFrame(uint64_t userMediaID, uint64_t frameID, Ref<WebCore::SecurityOrigin>&& userMediaDocumentOrigin, Ref<WebCore::SecurityOrigin>&& topLevelDocumentOrigin, const WebCore::MediaConstraints& audioConstraints, const WebCore::MediaConstraints& videoConstraints); 49 49 50 void removeGrantedAccess(uint64_t mainFrameID); 51 50 52 void userMediaAccessWasGranted(uint64_t, const String& audioDeviceUID, const String& videoDeviceUID); 51 53 void userMediaAccessWasDenied(uint64_t, UserMediaPermissionRequestProxy::UserMediaAccessDenialReason); … … 62 64 63 65 private: 64 Ref<UserMediaPermissionRequestProxy> createRequest(uint64_t userMediaID, uint64_t frameID, Ref<WebCore::SecurityOrigin>&& userMediaDocumentOrigin, Ref<WebCore::SecurityOrigin>&& topLevelDocumentOrigin, Vector<String>&& audioDeviceUIDs, Vector<String>&& videoDeviceUIDs, String&&);66 Ref<UserMediaPermissionRequestProxy> createRequest(uint64_t userMediaID, uint64_t mainFrameID, uint64_t frameID, Ref<WebCore::SecurityOrigin>&& userMediaDocumentOrigin, Ref<WebCore::SecurityOrigin>&& topLevelDocumentOrigin, Vector<String>&& audioDeviceUIDs, Vector<String>&& videoDeviceUIDs, String&&); 65 67 void denyRequest(uint64_t userMediaID, UserMediaPermissionRequestProxy::UserMediaAccessDenialReason, const String& invalidConstraint); 68 #if ENABLE(MEDIA_STREAM) 69 void grantAccess(uint64_t userMediaID, const String& audioDeviceUID, const String& videoDeviceUID, const String& deviceIdentifierHashSalt); 66 70 71 const UserMediaPermissionRequestProxy* searchForGrantedRequest(uint64_t frameID, const WebCore::SecurityOrigin& userMediaDocumentOrigin, const WebCore::SecurityOrigin& topLevelDocumentOrigin, bool needsAudio, bool needsVideo) const; 72 #endif 67 73 void getUserMediaPermissionInfo(uint64_t userMediaID, uint64_t frameID, UserMediaPermissionCheckProxy::CompletionHandler&&, Ref<WebCore::SecurityOrigin>&& userMediaDocumentOrigin, Ref<WebCore::SecurityOrigin>&& topLevelDocumentOrigin); 68 74 … … 76 82 WebCore::Timer m_rejectionTimer; 77 83 Vector<uint64_t> m_pendingRejections; 84 85 Vector<Ref<UserMediaPermissionRequestProxy>> m_grantedRequests; 78 86 }; 79 87 -
trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestProxy.cpp
r217081 r217910 31 31 namespace WebKit { 32 32 33 UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy(UserMediaPermissionRequestManagerProxy& manager, uint64_t userMediaID, uint64_t frameID, Ref<WebCore::SecurityOrigin>&& userMediaDocumentOrigin, Ref<WebCore::SecurityOrigin>&& topLevelDocumentOrigin, Vector<String>&& audioDeviceUIDs, Vector<String>&& videoDeviceUIDs, String&& deviceIDHashSalt)33 UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy(UserMediaPermissionRequestManagerProxy& manager, uint64_t userMediaID, uint64_t mainFrameID, uint64_t frameID, Ref<WebCore::SecurityOrigin>&& userMediaDocumentOrigin, Ref<WebCore::SecurityOrigin>&& topLevelDocumentOrigin, Vector<String>&& audioDeviceUIDs, Vector<String>&& videoDeviceUIDs, String&& deviceIDHashSalt) 34 34 : m_manager(&manager) 35 35 , m_userMediaID(userMediaID) 36 , m_mainFrameID(mainFrameID) 36 37 , m_frameID(frameID) 37 38 , m_userMediaDocumentSecurityOrigin(WTFMove(userMediaDocumentOrigin)) -
trunk/Source/WebKit2/UIProcess/UserMediaPermissionRequestProxy.h
r217081 r217910 34 34 class UserMediaPermissionRequestProxy : public API::ObjectImpl<API::Object::Type::UserMediaPermissionRequest> { 35 35 public: 36 static Ref<UserMediaPermissionRequestProxy> create(UserMediaPermissionRequestManagerProxy& manager, uint64_t userMediaID, uint64_t frameID, Ref<WebCore::SecurityOrigin>&& userMediaDocumentOrigin, Ref<WebCore::SecurityOrigin>&& topLevelDocumentOrigin, Vector<String>&& videoDeviceUIDs, Vector<String>&& audioDeviceUIDs, String&& deviceIDHashSalt)36 static Ref<UserMediaPermissionRequestProxy> create(UserMediaPermissionRequestManagerProxy& manager, uint64_t userMediaID, uint64_t mainFrameID, uint64_t frameID, Ref<WebCore::SecurityOrigin>&& userMediaDocumentOrigin, Ref<WebCore::SecurityOrigin>&& topLevelDocumentOrigin, Vector<String>&& videoDeviceUIDs, Vector<String>&& audioDeviceUIDs, String&& deviceIDHashSalt) 37 37 { 38 return adoptRef(*new UserMediaPermissionRequestProxy(manager, userMediaID, frameID, WTFMove(userMediaDocumentOrigin), WTFMove(topLevelDocumentOrigin), WTFMove(videoDeviceUIDs), WTFMove(audioDeviceUIDs), WTFMove(deviceIDHashSalt)));38 return adoptRef(*new UserMediaPermissionRequestProxy(manager, userMediaID, mainFrameID, frameID, WTFMove(userMediaDocumentOrigin), WTFMove(topLevelDocumentOrigin), WTFMove(videoDeviceUIDs), WTFMove(audioDeviceUIDs), WTFMove(deviceIDHashSalt))); 39 39 } 40 40 … … 52 52 const Vector<String>& audioDeviceUIDs() const { return m_audioDeviceUIDs; } 53 53 54 uint64_t mainFrameID() const { return m_mainFrameID; } 54 55 uint64_t frameID() const { return m_frameID; } 56 WebCore::SecurityOrigin& topLevelDocumentSecurityOrigin() { return m_topLevelDocumentSecurityOrigin.get(); } 55 57 WebCore::SecurityOrigin& userMediaDocumentSecurityOrigin() { return m_userMediaDocumentSecurityOrigin.get(); } 56 WebCore::SecurityOrigin& topLevelDocumentSecurityOrigin() { return m_topLevelDocumentSecurityOrigin.get(); }57 58 58 59 const String& deviceIdentifierHashSalt() const { return m_deviceIdentifierHashSalt; } 59 60 60 61 private: 61 UserMediaPermissionRequestProxy(UserMediaPermissionRequestManagerProxy&, uint64_t userMediaID, uint64_t frameID, Ref<WebCore::SecurityOrigin>&& userMediaDocumentOrigin, Ref<WebCore::SecurityOrigin>&& topLevelDocumentOrigin, Vector<String>&& videoDeviceUIDs, Vector<String>&& audioDeviceUIDs, String&&);62 UserMediaPermissionRequestProxy(UserMediaPermissionRequestManagerProxy&, uint64_t userMediaID, uint64_t mainFrameID, uint64_t frameID, Ref<WebCore::SecurityOrigin>&& userMediaDocumentOrigin, Ref<WebCore::SecurityOrigin>&& topLevelDocumentOrigin, Vector<String>&& videoDeviceUIDs, Vector<String>&& audioDeviceUIDs, String&&); 62 63 63 64 UserMediaPermissionRequestManagerProxy* m_manager; 64 65 uint64_t m_userMediaID; 66 uint64_t m_mainFrameID; 65 67 uint64_t m_frameID; 66 68 Ref<WebCore::SecurityOrigin> m_userMediaDocumentSecurityOrigin; -
trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp
r217837 r217910 3523 3523 } 3524 3524 3525 void WebPageProxy::didChangeMainDocument(uint64_t frameID) 3526 { 3527 #if ENABLE(MEDIA_STREAM) 3528 userMediaPermissionRequestManager().removeGrantedAccess(frameID); 3529 #else 3530 UNUSED_PARAM(frameID); 3531 #endif 3532 } 3533 3525 3534 void WebPageProxy::didReceiveTitleForFrame(uint64_t frameID, const String& title, const UserData& userData) 3526 3535 { -
trunk/Source/WebKit2/UIProcess/WebPageProxy.h
r217837 r217910 1246 1246 void didFailLoadForFrame(uint64_t frameID, uint64_t navigationID, const WebCore::ResourceError&, const UserData&); 1247 1247 void didSameDocumentNavigationForFrame(uint64_t frameID, uint64_t navigationID, uint32_t sameDocumentNavigationType, const String&, const UserData&); 1248 void didChangeMainDocument(uint64_t frameID); 1249 1248 1250 void didReceiveTitleForFrame(uint64_t frameID, const String&, const UserData&); 1249 1251 void didFirstLayoutForFrame(uint64_t frameID, const UserData&); -
trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in
r217737 r217910 134 134 DidDetectXSSForFrame(uint64_t frameID, WebKit::UserData userData) 135 135 DidSameDocumentNavigationForFrame(uint64_t frameID, uint64_t navigationID, uint32_t type, String url, WebKit::UserData userData) 136 DidChangeMainDocument(uint64_t frameID); 136 137 DidDestroyNavigation(uint64_t navigationID) 137 138 -
trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
r217725 r217910 337 337 } 338 338 339 void WebFrameLoaderClient::dispatchDidChangeMainDocument() 340 { 341 WebPage* webPage = m_frame->page(); 342 if (!webPage) 343 return; 344 345 webPage->send(Messages::WebPageProxy::DidChangeMainDocument(m_frame->frameID())); 346 } 347 339 348 void WebFrameLoaderClient::dispatchDidPushStateWithinPage() 340 349 { -
trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.h
r214266 r217910 85 85 void dispatchDidFinishDataDetection(NSArray *detectionResults) final; 86 86 #endif 87 87 void dispatchDidChangeMainDocument() final; 88 88 89 void dispatchDidDispatchOnloadEvents() final; 89 90 void dispatchDidReceiveServerRedirectForProvisionalLoad() final;
Note: See TracChangeset
for help on using the changeset viewer.