Make FrameLoadRequest a move-only type
authordbates@webkit.org <dbates@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 22 Jun 2017 19:45:10 +0000 (19:45 +0000)
committerdbates@webkit.org <dbates@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 22 Jun 2017 19:45:10 +0000 (19:45 +0000)
https://bugs.webkit.org/show_bug.cgi?id=173682

Reviewed by Alex Christensen and Darin Adler.

A FrameLoadRequest groups together the information to perform a load into a single object
that is more manageable to pass around than its constituent parts. Code that receives a
FrameLoadRequest is expected to extract out the information it needs to complete its task.
And it does not make sense to re-use the same FrameLoadRequest object for more than one
load. Therefore, it is sufficient to make FrameLoadRequest a move-only type.

Source/WebCore:

* inspector/InspectorFrontendClientLocal.cpp:
(WebCore::InspectorFrontendClientLocal::openInNewTab):
* inspector/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::navigate):
* loader/FrameLoadRequest.h:
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::changeLocation):
(WebCore::FrameLoader::urlSelected):
(WebCore::FrameLoader::loadURLIntoChildFrame):
(WebCore::FrameLoader::loadFrameRequest):
(WebCore::FrameLoader::loadURL):
(WebCore::FrameLoader::load):
(WebCore::FrameLoader::loadPostRequest):
(WebCore::createWindow):
* loader/FrameLoader.h:
* loader/NavigationScheduler.cpp:
(WebCore::NavigationScheduler::scheduleLocationChange):
* page/ContextMenuController.cpp:
(WebCore::openNewWindow):
(WebCore::ContextMenuController::contextMenuItemSelected):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::createWindow):
* replay/UserInputBridge.cpp:
(WebCore::UserInputBridge::loadRequest):
* replay/UserInputBridge.h:

Source/WebKit/ios:

* WebView/WebPDFViewPlaceholder.mm:
(-[WebPDFViewPlaceholder simulateClickOnLinkToURL:]):

Source/WebKit/mac:

* Plugins/WebPluginController.mm:
(-[WebPluginController webPlugInContainerLoadRequest:inFrame:]):
* WebView/WebPDFView.mm:
(-[WebPDFView PDFViewWillClickOnLink:withURL:]):

Source/WebKit/win:

* Plugins/PluginView.cpp:
(WebCore::PluginView::start):
(WebCore::PluginView::performRequest):
(WebCore::PluginView::load):
(WebCore::PluginView::getURLNotify):
(WebCore::PluginView::getURL):
(WebCore::PluginView::handlePost):
* Plugins/PluginView.h:
(WebCore::PluginRequest::PluginRequest):

Source/WebKit2:

* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::URLRequest::create):
(WebKit::PluginView::URLRequest::URLRequest):
(WebKit::PluginView::performFrameLoadURLRequest):
(WebKit::PluginView::loadURL):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchCreatePage):
* WebProcess/WebPage/WebInspector.cpp:
(WebKit::WebInspector::openInNewTab):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::loadRequest):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@218713 268f45cc-cd09-0410-ab3c-d52691b4dbfc

23 files changed:
Source/WebCore/ChangeLog
Source/WebCore/inspector/InspectorFrontendClientLocal.cpp
Source/WebCore/inspector/InspectorPageAgent.cpp
Source/WebCore/loader/FrameLoadRequest.h
Source/WebCore/loader/FrameLoader.cpp
Source/WebCore/loader/FrameLoader.h
Source/WebCore/loader/NavigationScheduler.cpp
Source/WebCore/page/ContextMenuController.cpp
Source/WebCore/page/DOMWindow.cpp
Source/WebCore/replay/UserInputBridge.cpp
Source/WebCore/replay/UserInputBridge.h
Source/WebKit/ios/ChangeLog
Source/WebKit/ios/WebView/WebPDFViewPlaceholder.mm
Source/WebKit/mac/ChangeLog
Source/WebKit/mac/Plugins/WebPluginController.mm
Source/WebKit/mac/WebView/WebPDFView.mm
Source/WebKit/win/ChangeLog
Source/WebKit/win/Plugins/PluginView.cpp
Source/WebKit/win/Plugins/PluginView.h
Source/WebKit2/ChangeLog
Source/WebKit2/WebProcess/Plugins/PluginView.cpp
Source/WebKit2/WebProcess/WebPage/WebInspector.cpp
Source/WebKit2/WebProcess/WebPage/WebPage.cpp

index b07b3a4..07002f0 100644 (file)
@@ -1,3 +1,42 @@
+2017-06-22  Daniel Bates  <dabates@apple.com>
+
+        Make FrameLoadRequest a move-only type
+        https://bugs.webkit.org/show_bug.cgi?id=173682
+
+        Reviewed by Alex Christensen and Darin Adler.
+
+        A FrameLoadRequest groups together the information to perform a load into a single object
+        that is more manageable to pass around than its constituent parts. Code that receives a
+        FrameLoadRequest is expected to extract out the information it needs to complete its task.
+        And it does not make sense to re-use the same FrameLoadRequest object for more than one
+        load. Therefore, it is sufficient to make FrameLoadRequest a move-only type.
+
+        * inspector/InspectorFrontendClientLocal.cpp:
+        (WebCore::InspectorFrontendClientLocal::openInNewTab):
+        * inspector/InspectorPageAgent.cpp:
+        (WebCore::InspectorPageAgent::navigate):
+        * loader/FrameLoadRequest.h:
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::changeLocation):
+        (WebCore::FrameLoader::urlSelected):
+        (WebCore::FrameLoader::loadURLIntoChildFrame):
+        (WebCore::FrameLoader::loadFrameRequest):
+        (WebCore::FrameLoader::loadURL):
+        (WebCore::FrameLoader::load):
+        (WebCore::FrameLoader::loadPostRequest):
+        (WebCore::createWindow):
+        * loader/FrameLoader.h:
+        * loader/NavigationScheduler.cpp:
+        (WebCore::NavigationScheduler::scheduleLocationChange):
+        * page/ContextMenuController.cpp:
+        (WebCore::openNewWindow):
+        (WebCore::ContextMenuController::contextMenuItemSelected):
+        * page/DOMWindow.cpp:
+        (WebCore::DOMWindow::createWindow):
+        * replay/UserInputBridge.cpp:
+        (WebCore::UserInputBridge::loadRequest):
+        * replay/UserInputBridge.h:
+
 2017-06-22  Jer Noble  <jer.noble@apple.com>
 
         REGRESSION (r217223): [iOS] Video keeps playing after application is backgrounded
index 29dcb1d..7063f7c 100644 (file)
@@ -230,7 +230,7 @@ void InspectorFrontendClientLocal::openInNewTab(const String& url)
     FrameLoadRequest frameLoadRequest { mainFrame.document()->securityOrigin(), ResourceRequest(), ASCIILiteral("_blank"), LockHistory::No, LockBackForwardList::No, MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Allow, ShouldOpenExternalURLsPolicy::ShouldNotAllow };
 
     bool created;
-    RefPtr<Frame> frame = WebCore::createWindow(mainFrame, mainFrame, frameLoadRequest, { }, created);
+    RefPtr<Frame> frame = WebCore::createWindow(mainFrame, mainFrame, WTFMove(frameLoadRequest), { }, created);
     if (!frame)
         return;
 
@@ -240,7 +240,7 @@ void InspectorFrontendClientLocal::openInNewTab(const String& url)
     // FIXME: Why do we compute the absolute URL with respect to |frame| instead of |mainFrame|?
     ResourceRequest resourceRequest { frame->document()->completeURL(url) };
     FrameLoadRequest frameLoadRequest2 { mainFrame.document()->securityOrigin(), resourceRequest, ASCIILiteral("_self"), LockHistory::No, LockBackForwardList::No, MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Allow, ShouldOpenExternalURLsPolicy::ShouldNotAllow };
-    frame->loader().changeLocation(frameLoadRequest2);
+    frame->loader().changeLocation(WTFMove(frameLoadRequest2));
 }
 
 void InspectorFrontendClientLocal::moveWindowBy(float x, float y)
index cc3be3f..6d81fa1 100644 (file)
@@ -424,7 +424,7 @@ void InspectorPageAgent::navigate(ErrorString&, const String& url)
 
     ResourceRequest resourceRequest { frame.document()->completeURL(url) };
     FrameLoadRequest frameLoadRequest { frame.document()->securityOrigin(), resourceRequest, ASCIILiteral("_self"), LockHistory::No, LockBackForwardList::No, MaybeSendReferrer, AllowNavigationToInvalidURL::No, NewFrameOpenerPolicy::Allow, ShouldOpenExternalURLsPolicy::ShouldNotAllow };
-    frame.loader().changeLocation(frameLoadRequest);
+    frame.loader().changeLocation(WTFMove(frameLoadRequest));
 }
 
 static Ref<Inspector::Protocol::Page::Cookie> buildObjectForCookie(const Cookie& cookie)
index fbfc201..a231334 100644 (file)
@@ -52,22 +52,8 @@ public:
     }
     WEBCORE_EXPORT FrameLoadRequest(Frame&, const ResourceRequest&, ShouldOpenExternalURLsPolicy, const SubstituteData& = SubstituteData());
 
-    FrameLoadRequest(const FrameLoadRequest& other)
-        : m_requester { other.m_requester.copyRef() }
-        , m_resourceRequest { other.m_resourceRequest }
-        , m_frameName { other.m_frameName }
-        , m_substituteData { other.m_substituteData }
-        , m_shouldCheckNewWindowPolicy { other.m_shouldCheckNewWindowPolicy }
-        , m_lockHistory { other.m_lockHistory }
-        , m_lockBackForwardList { other.m_lockBackForwardList }
-        , m_shouldSendReferrer { other.m_shouldSendReferrer }
-        , m_allowNavigationToInvalidURL { other.m_allowNavigationToInvalidURL }
-        , m_newFrameOpenerPolicy { other.m_newFrameOpenerPolicy }
-        , m_shouldReplaceDocumentIfJavaScriptURL { other.m_shouldReplaceDocumentIfJavaScriptURL }
-        , m_shouldOpenExternalURLsPolicy { other.m_shouldOpenExternalURLsPolicy }
-        , m_downloadAttribute { other.m_downloadAttribute }
-    {
-    }
+    FrameLoadRequest(FrameLoadRequest&&) = default;
+    FrameLoadRequest& operator=(FrameLoadRequest&&) = default;
 
     bool isEmpty() const { return m_resourceRequest.isEmpty(); }
 
index b410894..8557397 100644 (file)
@@ -354,9 +354,9 @@ void FrameLoader::setDefersLoading(bool defers)
     }
 }
 
-void FrameLoader::changeLocation(const FrameLoadRequest& request)
+void FrameLoader::changeLocation(FrameLoadRequest&& request)
 {
-    urlSelected(request, nullptr);
+    urlSelected(WTFMove(request), nullptr);
 }
 
 void FrameLoader::urlSelected(const URL& url, const String& passedTarget, Event* triggeringEvent, LockHistory lockHistory, LockBackForwardList lockBackForwardList, ShouldSendReferrer shouldSendReferrer, ShouldOpenExternalURLsPolicy shouldOpenExternalURLsPolicy, std::optional<NewFrameOpenerPolicy> openerPolicy, const AtomicString& downloadAttribute)
@@ -365,10 +365,9 @@ void FrameLoader::urlSelected(const URL& url, const String& passedTarget, Event*
     urlSelected(FrameLoadRequest(m_frame.document()->securityOrigin(), ResourceRequest(url), passedTarget, lockHistory, lockBackForwardList, shouldSendReferrer, AllowNavigationToInvalidURL::Yes, newFrameOpenerPolicy, shouldOpenExternalURLsPolicy, DoNotReplaceDocumentIfJavaScriptURL, downloadAttribute), triggeringEvent);
 }
 
-void FrameLoader::urlSelected(const FrameLoadRequest& passedRequest, Event* triggeringEvent)
+void FrameLoader::urlSelected(FrameLoadRequest&& frameRequest, Event* triggeringEvent)
 {
     Ref<Frame> protect(m_frame);
-    FrameLoadRequest frameRequest(passedRequest);
 
     if (m_frame.script().executeIfJavaScriptURL(frameRequest.resourceRequest().url(), frameRequest.shouldReplaceDocumentIfJavaScriptURL()))
         return;
@@ -379,7 +378,7 @@ void FrameLoader::urlSelected(const FrameLoadRequest& passedRequest, Event* trig
     addHTTPOriginIfNeeded(frameRequest.resourceRequest(), outgoingOrigin());
     m_frame.document()->contentSecurityPolicy()->upgradeInsecureRequestIfNeeded(frameRequest.resourceRequest(), ContentSecurityPolicy::InsecureRequestType::Navigation);
 
-    loadFrameRequest(frameRequest, triggeringEvent, nullptr);
+    loadFrameRequest(WTFMove(frameRequest), triggeringEvent, nullptr);
 }
 
 void FrameLoader::submitForm(Ref<FormSubmission>&& submission)
@@ -924,7 +923,7 @@ void FrameLoader::loadURLIntoChildFrame(const URL& url, const String& referer, F
     }
 
     FrameLoadRequest frameLoadRequest { m_frame.document()->securityOrigin(), { url }, ASCIILiteral("_self"), LockHistory::No, LockBackForwardList::Yes, ShouldSendReferrer::MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Suppress, ShouldOpenExternalURLsPolicy::ShouldNotAllow };
-    childFrame->loader().loadURL(frameLoadRequest, referer, FrameLoadType::RedirectWithLockedBackForwardList, 0, 0);
+    childFrame->loader().loadURL(WTFMove(frameLoadRequest), referer, FrameLoadType::RedirectWithLockedBackForwardList, nullptr, nullptr);
 }
 
 #if ENABLE(WEB_ARCHIVE) || ENABLE(MHTML)
@@ -1157,7 +1156,7 @@ void FrameLoader::setupForReplace()
     detachChildren();
 }
 
-void FrameLoader::loadFrameRequest(const FrameLoadRequest& request, Event* event, FormState* formState)
+void FrameLoader::loadFrameRequest(FrameLoadRequest&& request, Event* event, FormState* formState)
 {
     // Protect frame from getting blown away inside dispatchBeforeLoadEvent in loadWithDocumentLoader.
     auto protectFrame = makeRef(m_frame);
@@ -1186,17 +1185,18 @@ void FrameLoader::loadFrameRequest(const FrameLoadRequest& request, Event* event
     else
         loadType = FrameLoadType::Standard;
 
+    String frameName = request.frameName();
     if (request.resourceRequest().httpMethod() == "POST")
-        loadPostRequest(request, referrer, loadType, event, formState);
+        loadPostRequest(WTFMove(request), referrer, loadType, event, formState);
     else
-        loadURL(request, referrer, loadType, event, formState);
+        loadURL(WTFMove(request), referrer, loadType, event, formState);
 
     // FIXME: It's possible this targetFrame will not be the same frame that was targeted by the actual
     // load if frame names have changed.
     Frame* sourceFrame = formState ? formState->sourceDocument().frame() : &m_frame;
     if (!sourceFrame)
         sourceFrame = &m_frame;
-    Frame* targetFrame = sourceFrame->loader().findFrameForNavigation(request.frameName());
+    Frame* targetFrame = sourceFrame->loader().findFrameForNavigation(frameName);
     if (targetFrame && targetFrame != sourceFrame) {
         if (Page* page = targetFrame->page())
             page->chrome().focus();
@@ -1217,7 +1217,7 @@ bool FrameLoader::isNavigationAllowed() const
     return m_pageDismissalEventBeingDispatched == PageDismissalType::None && NavigationDisabler::isNavigationAllowed();
 }
 
-void FrameLoader::loadURL(const FrameLoadRequest& frameLoadRequest, const String& referrer, FrameLoadType newLoadType, Event* event, FormState* formState)
+void FrameLoader::loadURL(FrameLoadRequest&& frameLoadRequest, const String& referrer, FrameLoadType newLoadType, Event* event, FormState* formState)
 {
     if (m_inStopAllLoaders)
         return;
@@ -1247,11 +1247,10 @@ void FrameLoader::loadURL(const FrameLoadRequest& frameLoadRequest, const String
     ASSERT(newLoadType != FrameLoadType::Same);
 
     // The search for a target frame is done earlier in the case of form submission.
-    Frame* targetFrame = isFormSubmission ? 0 : findFrameForNavigation(frameName);
+    Frame* targetFrame = isFormSubmission ? nullptr : findFrameForNavigation(frameName);
     if (targetFrame && targetFrame != &m_frame) {
-        FrameLoadRequest newFrameLoadRequest(frameLoadRequest);
-        newFrameLoadRequest.setFrameName("_self");
-        targetFrame->loader().loadURL(newFrameLoadRequest, referrer, newLoadType, event, formState);
+        frameLoadRequest.setFrameName("_self");
+        targetFrame->loader().loadURL(WTFMove(frameLoadRequest), referrer, newLoadType, event, formState);
         return;
     }
 
@@ -1314,10 +1313,8 @@ SubstituteData FrameLoader::defaultSubstituteDataForURL(const URL& url)
     return SubstituteData(SharedBuffer::create(encodedSrcdoc.data(), encodedSrcdoc.length()), URL(), response, SubstituteData::SessionHistoryVisibility::Hidden);
 }
 
-void FrameLoader::load(const FrameLoadRequest& passedRequest)
+void FrameLoader::load(FrameLoadRequest&& request)
 {
-    FrameLoadRequest request(passedRequest);
-
     if (m_inStopAllLoaders)
         return;
 
@@ -1326,14 +1323,14 @@ void FrameLoader::load(const FrameLoadRequest& passedRequest)
         if (frame) {
             request.setShouldCheckNewWindowPolicy(false);
             if (&frame->loader() != this) {
-                frame->loader().load(request);
+                frame->loader().load(WTFMove(request));
                 return;
             }
         }
     }
 
     if (request.shouldCheckNewWindowPolicy()) {
-        NavigationAction action(request.resourceRequest(), NavigationType::Other, passedRequest.shouldOpenExternalURLsPolicy());
+        NavigationAction action(request.resourceRequest(), NavigationType::Other, request.shouldOpenExternalURLsPolicy());
         policyChecker().checkNewWindowPolicy(action, request.resourceRequest(), nullptr, request.frameName(), [this] (const ResourceRequest& request, FormState* formState, const String& frameName, const NavigationAction& action, bool shouldContinue) {
             continueLoadAfterNewWindowPolicy(request, formState, frameName, action, shouldContinue, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Suppress);
         });
@@ -2693,7 +2690,7 @@ void FrameLoader::addHTTPUpgradeInsecureRequestsIfNeeded(ResourceRequest& reques
     request.setHTTPHeaderField(HTTPHeaderName::UpgradeInsecureRequests, ASCIILiteral("1"));
 }
 
-void FrameLoader::loadPostRequest(const FrameLoadRequest& request, const String& referrer, FrameLoadType loadType, Event* event, FormState* formState)
+void FrameLoader::loadPostRequest(FrameLoadRequest&& request, const String& referrer, FrameLoadType loadType, Event* event, FormState* formState)
 {
     String frameName = request.frameName();
     LockHistory lockHistory = request.lockHistory();
@@ -3664,7 +3661,7 @@ bool FrameLoaderClient::hasHTMLView() const
     return true;
 }
 
-RefPtr<Frame> createWindow(Frame& openerFrame, Frame& lookupFrame, const FrameLoadRequest& request, const WindowFeatures& features, bool& created)
+RefPtr<Frame> createWindow(Frame& openerFrame, Frame& lookupFrame, FrameLoadRequest&& request, const WindowFeatures& features, bool& created)
 {
     ASSERT(!features.dialog || request.frameName().isEmpty());
 
@@ -3688,19 +3685,19 @@ RefPtr<Frame> createWindow(Frame& openerFrame, Frame& lookupFrame, const FrameLo
     }
 
     // FIXME: Setting the referrer should be the caller's responsibility.
-    FrameLoadRequest requestWithReferrer = request;
     String referrer = SecurityPolicy::generateReferrerHeader(openerFrame.document()->referrerPolicy(), request.resourceRequest().url(), openerFrame.loader().outgoingReferrer());
     if (!referrer.isEmpty())
-        requestWithReferrer.resourceRequest().setHTTPReferrer(referrer);
-    FrameLoader::addHTTPOriginIfNeeded(requestWithReferrer.resourceRequest(), openerFrame.loader().outgoingOrigin());
-    FrameLoader::addHTTPUpgradeInsecureRequestsIfNeeded(requestWithReferrer.resourceRequest());
+        request.resourceRequest().setHTTPReferrer(referrer);
+    FrameLoader::addHTTPOriginIfNeeded(request.resourceRequest(), openerFrame.loader().outgoingOrigin());
+    FrameLoader::addHTTPUpgradeInsecureRequestsIfNeeded(request.resourceRequest());
 
     Page* oldPage = openerFrame.page();
     if (!oldPage)
         return nullptr;
 
     ShouldOpenExternalURLsPolicy shouldOpenExternalURLsPolicy = shouldOpenExternalURLsPolicyToApply(openerFrame, request.shouldOpenExternalURLsPolicy());
-    Page* page = oldPage->chrome().createWindow(openerFrame, requestWithReferrer, features, NavigationAction(requestWithReferrer.resourceRequest(), NavigationType::Other, shouldOpenExternalURLsPolicy));
+    NavigationAction action { request.resourceRequest(), NavigationType::Other, shouldOpenExternalURLsPolicy };
+    Page* page = oldPage->chrome().createWindow(openerFrame, request, features, action);
     if (!page)
         return nullptr;
 
index 1d02029..6cacdda 100644 (file)
@@ -108,16 +108,16 @@ public:
 
     // FIXME: These are all functions which start loads. We have too many.
     WEBCORE_EXPORT void loadURLIntoChildFrame(const URL&, const String& referer, Frame*);
-    WEBCORE_EXPORT void loadFrameRequest(const FrameLoadRequest&, Event*, FormState*); // Called by submitForm, calls loadPostRequest and loadURL.
+    WEBCORE_EXPORT void loadFrameRequest(FrameLoadRequest&&, Event*, FormState*); // Called by submitForm, calls loadPostRequest and loadURL.
 
-    WEBCORE_EXPORT void load(const FrameLoadRequest&);
+    WEBCORE_EXPORT void load(FrameLoadRequest&&);
 
 #if ENABLE(WEB_ARCHIVE) || ENABLE(MHTML)
     WEBCORE_EXPORT void loadArchive(Ref<Archive>&&);
 #endif
     unsigned long loadResourceSynchronously(const ResourceRequest&, StoredCredentials, ClientCredentialPolicy, ResourceError&, ResourceResponse&, RefPtr<SharedBuffer>& data);
 
-    void changeLocation(const FrameLoadRequest&);
+    void changeLocation(FrameLoadRequest&&);
     WEBCORE_EXPORT void urlSelected(const URL&, const String& target, Event*, LockHistory, LockBackForwardList, ShouldSendReferrer, ShouldOpenExternalURLsPolicy, std::optional<NewFrameOpenerPolicy> = std::nullopt, const AtomicString& downloadAttribute = nullAtom);
     void submitForm(Ref<FormSubmission>&&);
 
@@ -353,15 +353,15 @@ private:
 
     void dispatchDidCommitLoad(std::optional<HasInsecureContent> initialHasInsecureContent);
 
-    void urlSelected(const FrameLoadRequest&, Event*);
+    void urlSelected(FrameLoadRequest&&, Event*);
 
     void loadWithDocumentLoader(DocumentLoader*, FrameLoadType, FormState*, AllowNavigationToInvalidURL); // Calls continueLoadAfterNavigationPolicy
     void load(DocumentLoader*); // Calls loadWithDocumentLoader
 
     void loadWithNavigationAction(const ResourceRequest&, const NavigationAction&, LockHistory, FrameLoadType, FormState*, AllowNavigationToInvalidURL); // Calls loadWithDocumentLoader
 
-    void loadPostRequest(const FrameLoadRequest&, const String& referrer, FrameLoadType, Event*, FormState*);
-    void loadURL(const FrameLoadRequest&, const String& referrer, FrameLoadType, Event*, FormState*);
+    void loadPostRequest(FrameLoadRequest&&, const String& referrer, FrameLoadType, Event*, FormState*);
+    void loadURL(FrameLoadRequest&&, const String& referrer, FrameLoadType, Event*, FormState*);
 
     bool shouldReload(const URL& currentURL, const URL& destinationURL);
 
@@ -469,6 +469,6 @@ private:
 //
 // FIXME: Consider making this function part of an appropriate class (not FrameLoader)
 // and moving it to a more appropriate location.
-RefPtr<Frame> createWindow(Frame& openerFrame, Frame& lookupFrame, const FrameLoadRequest&, const WindowFeatures&, bool& created);
+RefPtr<Frame> createWindow(Frame& openerFrame, Frame& lookupFrame, FrameLoadRequest&&, const WindowFeatures&, bool& created);
 
 } // namespace WebCore
index be79324..365c0d6 100644 (file)
@@ -125,7 +125,7 @@ protected:
         ResourceRequest resourceRequest(m_url, m_referrer, UseProtocolCachePolicy);
         FrameLoadRequest frameRequest(*m_securityOrigin, resourceRequest, "_self", lockHistory(), lockBackForwardList(), MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Allow, shouldOpenExternalURLs());
 
-        frame.loader().changeLocation(frameRequest);
+        frame.loader().changeLocation(WTFMove(frameRequest));
     }
 
     void didStartTimer(Frame& frame, Timer& timer) override
@@ -183,7 +183,7 @@ public:
         ResourceRequest resourceRequest(url(), referrer(), refresh ? ReloadIgnoringCacheData : UseProtocolCachePolicy);
         FrameLoadRequest frameRequest(*securityOrigin(), resourceRequest, "_self", lockHistory(), lockBackForwardList(), MaybeSendReferrer, AllowNavigationToInvalidURL::No, NewFrameOpenerPolicy::Allow, shouldOpenExternalURLs());
 
-        frame.loader().changeLocation(frameRequest);
+        frame.loader().changeLocation(WTFMove(frameRequest));
     }
 };
 
@@ -198,7 +198,7 @@ public:
 
         ResourceRequest resourceRequest(url(), referrer(), UseProtocolCachePolicy);
         FrameLoadRequest frameRequest(*securityOrigin(), resourceRequest, "_self", lockHistory(), lockBackForwardList(), MaybeSendReferrer, AllowNavigationToInvalidURL::No, NewFrameOpenerPolicy::Allow, shouldOpenExternalURLs());
-        frame.loader().changeLocation(frameRequest);
+        frame.loader().changeLocation(WTFMove(frameRequest));
     }
 };
 
@@ -215,7 +215,7 @@ public:
 
         ResourceRequest resourceRequest(url(), referrer(), ReloadIgnoringCacheData);
         FrameLoadRequest frameRequest(*securityOrigin(), resourceRequest, "_self", lockHistory(), lockBackForwardList(), MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Allow, shouldOpenExternalURLs());
-        frame.loader().changeLocation(frameRequest);
+        frame.loader().changeLocation(WTFMove(frameRequest));
     }
 };
 
@@ -268,7 +268,7 @@ public:
             return;
         FrameLoadRequest frameLoadRequest { requestingDocument.securityOrigin(), { }, { }, lockHistory(), lockBackForwardList(), MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Allow, shouldOpenExternalURLs() };
         m_submission->populateFrameLoadRequest(frameLoadRequest);
-        frame.loader().loadFrameRequest(frameLoadRequest, m_submission->event(), &m_submission->state());
+        frame.loader().loadFrameRequest(WTFMove(frameLoadRequest), m_submission->event(), &m_submission->state());
     }
 
     void didStartTimer(Frame& frame, Timer& timer) override
@@ -318,7 +318,7 @@ public:
         ResourceRequest resourceRequest(m_originDocument.url(), emptyString(), ReloadIgnoringCacheData);
         FrameLoadRequest frameLoadRequest { m_originDocument.securityOrigin(), resourceRequest, { }, lockHistory(), lockBackForwardList(), MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Allow, shouldOpenExternalURLs() };
         frameLoadRequest.setSubstituteData(replacementData);
-        frame.loader().load(frameLoadRequest);
+        frame.loader().load(WTFMove(frameLoadRequest));
     }
 
 private:
@@ -416,7 +416,7 @@ void NavigationScheduler::scheduleLocationChange(Document& initiatingDocument, S
     if (url.hasFragmentIdentifier() && equalIgnoringFragmentIdentifier(m_frame.document()->url(), url)) {
         ResourceRequest resourceRequest { m_frame.document()->completeURL(url), referrer, UseProtocolCachePolicy };
         FrameLoadRequest frameLoadRequest { securityOrigin, resourceRequest, ASCIILiteral("_self"), lockHistory, lockBackForwardList, MaybeSendReferrer, AllowNavigationToInvalidURL::No, NewFrameOpenerPolicy::Allow, initiatingDocument.shouldOpenExternalURLsPolicyToPropagate() };
-        loader.changeLocation(frameLoadRequest);
+        loader.changeLocation(WTFMove(frameLoadRequest));
         return;
     }
 
index 4d99ea1..f5e92ca 100644 (file)
@@ -195,7 +195,7 @@ static void openNewWindow(const URL& urlToLoad, Frame& frame, ShouldOpenExternal
     if (!newPage)
         return;
     newPage->chrome().show();
-    newPage->mainFrame().loader().loadFrameRequest(frameLoadRequest, nullptr, nullptr);
+    newPage->mainFrame().loader().loadFrameRequest(WTFMove(frameLoadRequest), nullptr, nullptr);
 }
 
 #if PLATFORM(GTK)
@@ -396,7 +396,7 @@ void ContextMenuController::contextMenuItemSelected(ContextMenuAction action, co
         if (Frame* targetFrame = m_context.hitTestResult().targetFrame()) {
             ResourceRequest resourceRequest { m_context.hitTestResult().absoluteLinkURL(), frame->loader().outgoingReferrer() };
             FrameLoadRequest frameLoadRequest { frame->document()->securityOrigin(), resourceRequest, { }, LockHistory::No, LockBackForwardList::No, MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Suppress, targetFrame->isMainFrame() ? ShouldOpenExternalURLsPolicy::ShouldAllow : ShouldOpenExternalURLsPolicy::ShouldNotAllow };
-            targetFrame->loader().loadFrameRequest(frameLoadRequest, nullptr, nullptr);
+            targetFrame->loader().loadFrameRequest(WTFMove(frameLoadRequest), nullptr, nullptr);
         } else
             openNewWindow(m_context.hitTestResult().absoluteLinkURL(), *frame, ShouldOpenExternalURLsPolicy::ShouldAllow);
         break;
index 20b3200..f91aed6 100644 (file)
@@ -2204,7 +2204,7 @@ RefPtr<Frame> DOMWindow::createWindow(const String& urlString, const AtomicStrin
     // We pass the opener frame for the lookupFrame in case the active frame is different from
     // the opener frame, and the name references a frame relative to the opener frame.
     bool created;
-    RefPtr<Frame> newFrame = WebCore::createWindow(*activeFrame, openerFrame, frameLoadRequest, windowFeatures, created);
+    RefPtr<Frame> newFrame = WebCore::createWindow(*activeFrame, openerFrame, WTFMove(frameLoadRequest), windowFeatures, created);
     if (!newFrame)
         return nullptr;
 
@@ -2221,7 +2221,7 @@ RefPtr<Frame> DOMWindow::createWindow(const String& urlString, const AtomicStrin
     if (created) {
         ResourceRequest resourceRequest { completedURL, referrer, UseProtocolCachePolicy };
         FrameLoadRequest frameLoadRequest { activeWindow.document()->securityOrigin(), resourceRequest, ASCIILiteral("_self"), LockHistory::No, LockBackForwardList::No, MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Allow, activeDocument->shouldOpenExternalURLsPolicyToPropagate() };
-        newFrame->loader().changeLocation(frameLoadRequest);
+        newFrame->loader().changeLocation(WTFMove(frameLoadRequest));
     } else if (!urlString.isEmpty()) {
         LockHistory lockHistory = ScriptController::processingUserGesture() ? LockHistory::No : LockHistory::Yes;
         newFrame->navigationScheduler().scheduleLocationChange(*activeWindow.document(), activeWindow.document()->securityOrigin(), completedURL, referrer, lockHistory, LockBackForwardList::No);
index 79076e6..772efc0 100644 (file)
@@ -237,9 +237,9 @@ bool UserInputBridge::logicalScrollRecursively(ScrollLogicalDirection direction,
     return m_page.focusController().focusedOrMainFrame().eventHandler().logicalScrollRecursively(direction, granularity, nullptr);
 }
 
-void UserInputBridge::loadRequest(const FrameLoadRequest& request, InputSource)
+void UserInputBridge::loadRequest(FrameLoadRequest&& request, InputSource)
 {
-    m_page.mainFrame().loader().load(request);
+    m_page.mainFrame().loader().load(WTFMove(request));
 }
 
 void UserInputBridge::reloadFrame(Frame* frame, OptionSet<ReloadOption> options, InputSource)
index 26f4a36..2b16031 100644 (file)
@@ -88,7 +88,7 @@ public:
     bool logicalScrollRecursively(ScrollLogicalDirection, ScrollGranularity, InputSource source = InputSource::User);
 
     // Navigation APIs.
-    WEBCORE_EXPORT void loadRequest(const FrameLoadRequest&, InputSource source = InputSource::User);
+    WEBCORE_EXPORT void loadRequest(FrameLoadRequest&&, InputSource = InputSource::User);
     WEBCORE_EXPORT void reloadFrame(Frame*, OptionSet<ReloadOption>, InputSource = InputSource::User);
     WEBCORE_EXPORT void stopLoadingFrame(Frame*, InputSource source = InputSource::User);
     WEBCORE_EXPORT bool tryClosePage(InputSource source = InputSource::User);
index 4095901..107a728 100644 (file)
@@ -1,3 +1,19 @@
+2017-06-22  Daniel Bates  <dabates@apple.com>
+
+        Make FrameLoadRequest a move-only type
+        https://bugs.webkit.org/show_bug.cgi?id=173682
+
+        Reviewed by Alex Christensen and Darin Adler.
+
+        A FrameLoadRequest groups together the information to perform a load into a single object
+        that is more manageable to pass around than its constituent parts. Code that receives a
+        FrameLoadRequest is expected to extract out the information it needs to complete its task.
+        And it does not make sense to re-use the same FrameLoadRequest object for more than one
+        load. Therefore, it is sufficient to make FrameLoadRequest a move-only type.
+
+        * WebView/WebPDFViewPlaceholder.mm:
+        (-[WebPDFViewPlaceholder simulateClickOnLinkToURL:]):
+
 2017-06-21  Daniel Bates  <dabates@apple.com>
 
         Cleanup FrameLoadRequest
index e8c4783..52b965e 100644 (file)
@@ -488,7 +488,7 @@ static const float PAGE_HEIGHT_INSET = 4.0f * 2.0f;
     // Call to the frame loader because this is where our security checks are made.
     Frame* frame = core([_dataSource webFrame]);
     FrameLoadRequest frameLoadRequest { frame->document()->securityOrigin(), { URL }, { }, LockHistory::No, LockBackForwardList::No, MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Allow, ShouldOpenExternalURLsPolicy::ShouldNotAllow };
-    frame->loader().loadFrameRequest(frameLoadRequest, event.get(), nullptr);
+    frame->loader().loadFrameRequest(WTFMove(frameLoadRequest), event.get(), nullptr);
 }
 
 @end
index 3be5c6e..7b8a172 100644 (file)
@@ -1,3 +1,21 @@
+2017-06-22  Daniel Bates  <dabates@apple.com>
+
+        Make FrameLoadRequest a move-only type
+        https://bugs.webkit.org/show_bug.cgi?id=173682
+
+        Reviewed by Alex Christensen and Darin Adler.
+
+        A FrameLoadRequest groups together the information to perform a load into a single object
+        that is more manageable to pass around than its constituent parts. Code that receives a
+        FrameLoadRequest is expected to extract out the information it needs to complete its task.
+        And it does not make sense to re-use the same FrameLoadRequest object for more than one
+        load. Therefore, it is sufficient to make FrameLoadRequest a move-only type.
+
+        * Plugins/WebPluginController.mm:
+        (-[WebPluginController webPlugInContainerLoadRequest:inFrame:]):
+        * WebView/WebPDFView.mm:
+        (-[WebPDFView PDFViewWillClickOnLink:withURL:]):
+
 2017-06-21  Antoine Quint  <graouts@apple.com>
 
         Ensure DRT always logs rAF suspension debugging code
index f7f436f..4f78077 100644 (file)
@@ -501,7 +501,7 @@ static void cancelOutstandingCheck(const void *item, void *context)
         FrameLoadRequest frameLoadRequest { *core(frame), request, ShouldOpenExternalURLsPolicy::ShouldNotAllow };
         frameLoadRequest.setFrameName(target);
         frameLoadRequest.setShouldCheckNewWindowPolicy(true);
-        core(frame)->loader().load(frameLoadRequest);
+        core(frame)->loader().load(WTFMove(frameLoadRequest));
     }
 }
 
index 29e2bf4..7160720 100644 (file)
@@ -1039,7 +1039,7 @@ static BOOL isFrameInRange(WebFrame *frame, DOMRange *range)
     // Call to the frame loader because this is where our security checks are made.
     Frame* frame = core([dataSource webFrame]);
     FrameLoadRequest frameLoadRequest { frame->document()->securityOrigin(), { URL }, { }, LockHistory::No, LockBackForwardList::No, MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Allow, ShouldOpenExternalURLsPolicy::ShouldNotAllow };
-    frame->loader().loadFrameRequest(frameLoadRequest, event.get(), nullptr);
+    frame->loader().loadFrameRequest(WTFMove(frameLoadRequest), event.get(), nullptr);
 }
 
 - (void)PDFViewOpenPDFInNativeApplication:(PDFView *)sender
index 65dd615..2a52d82 100644 (file)
@@ -1,5 +1,28 @@
 2017-06-22  Daniel Bates  <dabates@apple.com>
 
+        Make FrameLoadRequest a move-only type
+        https://bugs.webkit.org/show_bug.cgi?id=173682
+
+        Reviewed by Alex Christensen and Darin Adler.
+
+        A FrameLoadRequest groups together the information to perform a load into a single object
+        that is more manageable to pass around than its constituent parts. Code that receives a
+        FrameLoadRequest is expected to extract out the information it needs to complete its task.
+        And it does not make sense to re-use the same FrameLoadRequest object for more than one
+        load. Therefore, it is sufficient to make FrameLoadRequest a move-only type.
+
+        * Plugins/PluginView.cpp:
+        (WebCore::PluginView::start):
+        (WebCore::PluginView::performRequest):
+        (WebCore::PluginView::load):
+        (WebCore::PluginView::getURLNotify):
+        (WebCore::PluginView::getURL):
+        (WebCore::PluginView::handlePost):
+        * Plugins/PluginView.h:
+        (WebCore::PluginRequest::PluginRequest):
+
+2017-06-22  Daniel Bates  <dabates@apple.com>
+
         [Win] Cleanup: Remove unnecessary include of header FrameLoadRequest.h
         https://bugs.webkit.org/show_bug.cgi?id=173683
 
index e3fa0bf..bf52fb5 100644 (file)
@@ -258,7 +258,7 @@ bool PluginView::start()
         FrameLoadRequest frameLoadRequest { m_parentFrame->document()->securityOrigin(), { }, { }, LockHistory::No, LockBackForwardList::No, ShouldSendReferrer::MaybeSendReferrer, AllowNavigationToInvalidURL::Yes, NewFrameOpenerPolicy::Allow, ShouldOpenExternalURLsPolicy::ShouldNotAllow };
         frameLoadRequest.resourceRequest().setHTTPMethod("GET");
         frameLoadRequest.resourceRequest().setURL(m_url);
-        load(frameLoadRequest, false, 0);
+        load(WTFMove(frameLoadRequest), false, nullptr);
     }
 
     m_status = PluginStatusLoadedSuccessfully;
@@ -425,7 +425,7 @@ void PluginView::performRequest(PluginRequest* request)
             FrameLoadRequest frameLoadRequest { *m_parentFrame.get(), request->frameLoadRequest().resourceRequest(), ShouldOpenExternalURLsPolicy::ShouldNotAllow };
             frameLoadRequest.setFrameName(targetFrameName);
             frameLoadRequest.setShouldCheckNewWindowPolicy(true);
-            m_parentFrame->loader().load(frameLoadRequest);
+            m_parentFrame->loader().load(WTFMove(frameLoadRequest));
 
             // FIXME: <rdar://problem/4807469> This should be sent when the document has finished loading
             if (request->sendNotification()) {
@@ -488,7 +488,7 @@ void PluginView::scheduleRequest(std::unique_ptr<PluginRequest> request)
         m_requestTimer.startOneShot(0_s);
 }
 
-NPError PluginView::load(const FrameLoadRequest& frameLoadRequest, bool sendNotification, void* notifyData)
+NPError PluginView::load(FrameLoadRequest&& frameLoadRequest, bool sendNotification, void* notifyData)
 {
     ASSERT(frameLoadRequest.resourceRequest().httpMethod() == "GET" || frameLoadRequest.resourceRequest().httpMethod() == "POST");
 
@@ -516,7 +516,7 @@ NPError PluginView::load(const FrameLoadRequest& frameLoadRequest, bool sendNoti
     } else if (!m_parentFrame->document()->securityOrigin().canDisplay(url))
         return NPERR_GENERIC_ERROR;
 
-    scheduleRequest(std::make_unique<PluginRequest>(frameLoadRequest, sendNotification, notifyData, arePopupsAllowed()));
+    scheduleRequest(std::make_unique<PluginRequest>(WTFMove(frameLoadRequest), sendNotification, notifyData, arePopupsAllowed()));
 
     return NPERR_NO_ERROR;
 }
@@ -539,7 +539,7 @@ NPError PluginView::getURLNotify(const char* url, const char* target, void* noti
     frameLoadRequest.resourceRequest().setHTTPMethod("GET");
     frameLoadRequest.resourceRequest().setURL(makeURL(m_parentFrame->document()->baseURL(), url));
 
-    return load(frameLoadRequest, true, notifyData);
+    return load(WTFMove(frameLoadRequest), true, notifyData);
 }
 
 NPError PluginView::getURL(const char* url, const char* target)
@@ -549,7 +549,7 @@ NPError PluginView::getURL(const char* url, const char* target)
     frameLoadRequest.resourceRequest().setHTTPMethod("GET");
     frameLoadRequest.resourceRequest().setURL(makeURL(m_parentFrame->document()->baseURL(), url));
 
-    return load(frameLoadRequest, false, 0);
+    return load(WTFMove(frameLoadRequest), false, nullptr);
 }
 
 NPError PluginView::postURLNotify(const char* url, const char* target, uint32_t len, const char* buf, NPBool file, void* notifyData)
@@ -1093,7 +1093,7 @@ NPError PluginView::handlePost(const char* url, const char* target, uint32_t len
     frameLoadRequest.resourceRequest().setHTTPHeaderFields(WTFMove(headerFields));
     frameLoadRequest.resourceRequest().setHTTPBody(FormData::create(postData, postDataLength));
 
-    return load(frameLoadRequest, sendNotification, notifyData);
+    return load(WTFMove(frameLoadRequest), sendNotification, notifyData);
 }
 
 void PluginView::invalidateWindowlessPluginRect(const IntRect& rect)
index 65bf610..a7f6f9b 100644 (file)
@@ -80,12 +80,14 @@ namespace WebCore {
     class PluginRequest {
         WTF_MAKE_NONCOPYABLE(PluginRequest); WTF_MAKE_FAST_ALLOCATED;
     public:
-        PluginRequest(const FrameLoadRequest& frameLoadRequest, bool sendNotification, void* notifyData, bool shouldAllowPopups)
-            : m_frameLoadRequest(frameLoadRequest)
-            , m_notifyData(notifyData)
-            , m_sendNotification(sendNotification)
-            , m_shouldAllowPopups(shouldAllowPopups) { }
-    public:
+        PluginRequest(FrameLoadRequest&& frameLoadRequest, bool sendNotification, void* notifyData, bool shouldAllowPopups)
+            : m_frameLoadRequest { WTFMove(frameLoadRequest) }
+            , m_notifyData { notifyData }
+            , m_sendNotification { sendNotification }
+            , m_shouldAllowPopups { shouldAllowPopups }
+        {
+        }
+
         const FrameLoadRequest& frameLoadRequest() const { return m_frameLoadRequest; }
         void* notifyData() const { return m_notifyData; }
         bool sendNotification() const { return m_sendNotification; }
@@ -239,7 +241,7 @@ namespace WebCore {
         void platformDestroy();
         static void setCurrentPluginView(PluginView*);
 #if ENABLE(NETSCAPE_PLUGIN_API)
-        NPError load(const FrameLoadRequest&, bool sendNotification, void* notifyData);
+        NPError load(FrameLoadRequest&&, bool sendNotification, void* notifyData);
         NPError handlePost(const char* url, const char* target, uint32_t len, const char* buf, bool file, void* notifyData, bool sendNotification, bool allowHeaders);
         NPError handlePostReadFile(Vector<char>& buffer, uint32_t len, const char* buf);
 #endif
index 7b38a83..0c8d7d1 100644 (file)
@@ -1,3 +1,28 @@
+2017-06-22  Daniel Bates  <dabates@apple.com>
+
+        Make FrameLoadRequest a move-only type
+        https://bugs.webkit.org/show_bug.cgi?id=173682
+
+        Reviewed by Alex Christensen and Darin Adler.
+
+        A FrameLoadRequest groups together the information to perform a load into a single object
+        that is more manageable to pass around than its constituent parts. Code that receives a
+        FrameLoadRequest is expected to extract out the information it needs to complete its task.
+        And it does not make sense to re-use the same FrameLoadRequest object for more than one
+        load. Therefore, it is sufficient to make FrameLoadRequest a move-only type.
+
+        * WebProcess/Plugins/PluginView.cpp:
+        (WebKit::PluginView::URLRequest::create):
+        (WebKit::PluginView::URLRequest::URLRequest):
+        (WebKit::PluginView::performFrameLoadURLRequest):
+        (WebKit::PluginView::loadURL):
+        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
+        (WebKit::WebFrameLoaderClient::dispatchCreatePage):
+        * WebProcess/WebPage/WebInspector.cpp:
+        (WebKit::WebInspector::openInNewTab):
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::loadRequest):
+
 2017-06-22  Chris Dumez  <cdumez@apple.com>
 
         Add release assertion in CallbackMap::invalidate()
index e8e1e8c..3b86687 100644 (file)
@@ -86,9 +86,9 @@ static const Seconds pluginSnapshotTimerDelay { 1100_ms };
 
 class PluginView::URLRequest : public RefCounted<URLRequest> {
 public:
-    static Ref<PluginView::URLRequest> create(uint64_t requestID, const FrameLoadRequest& request, bool allowPopups)
+    static Ref<PluginView::URLRequest> create(uint64_t requestID, FrameLoadRequest&& request, bool allowPopups)
     {
-        return adoptRef(*new URLRequest(requestID, request, allowPopups));
+        return adoptRef(*new URLRequest(requestID, WTFMove(request), allowPopups));
     }
 
     uint64_t requestID() const { return m_requestID; }
@@ -97,10 +97,10 @@ public:
     bool allowPopups() const { return m_allowPopups; }
 
 private:
-    URLRequest(uint64_t requestID, const FrameLoadRequest& request, bool allowPopups)
-        : m_requestID(requestID)
-        , m_request(request)
-        , m_allowPopups(allowPopups)
+    URLRequest(uint64_t requestID, FrameLoadRequest&& request, bool allowPopups)
+        : m_requestID { requestID }
+        , m_request { WTFMove(request) }
+        , m_allowPopups { allowPopups }
     {
     }
 
@@ -1202,7 +1202,7 @@ void PluginView::performFrameLoadURLRequest(URLRequest* request)
         FrameLoadRequest frameLoadRequest { *frame, request->request(), ShouldOpenExternalURLsPolicy::ShouldNotAllow };
         frameLoadRequest.setFrameName(request->target());
         frameLoadRequest.setShouldCheckNewWindowPolicy(true);
-        frame->loader().load(frameLoadRequest);
+        frame->loader().load(WTFMove(frameLoadRequest));
 
         // FIXME: We don't know whether the window was successfully created here so we just assume that it worked.
         // It's better than not telling the plug-in anything.
@@ -1402,7 +1402,7 @@ void PluginView::loadURL(uint64_t requestID, const String& method, const String&
     if (!referrer.isEmpty())
         frameLoadRequest.resourceRequest().setHTTPReferrer(referrer);
 
-    m_pendingURLRequests.append(URLRequest::create(requestID, frameLoadRequest, allowPopups));
+    m_pendingURLRequests.append(URLRequest::create(requestID, WTFMove(frameLoadRequest), allowPopups));
     m_pendingURLRequestsTimer.startOneShot(0_s);
 }
 
index dc07d11..c014da6 100644 (file)
@@ -152,7 +152,7 @@ void WebInspector::openInNewTab(const String& urlString)
     if (!newPage)
         return;
 
-    newPage->mainFrame().loader().load(frameLoadRequest);
+    newPage->mainFrame().loader().load(WTFMove(frameLoadRequest));
 }
 
 void WebInspector::evaluateScriptForTest(const String& script)
index da22d8e..76272cc 100644 (file)
@@ -1219,7 +1219,7 @@ void WebPage::loadRequest(const LoadParameters& loadParameters)
     ShouldOpenExternalURLsPolicy externalURLsPolicy = static_cast<ShouldOpenExternalURLsPolicy>(loadParameters.shouldOpenExternalURLsPolicy);
     frameLoadRequest.setShouldOpenExternalURLsPolicy(externalURLsPolicy);
 
-    corePage()->userInputBridge().loadRequest(frameLoadRequest);
+    corePage()->userInputBridge().loadRequest(WTFMove(frameLoadRequest));
 
     ASSERT(!m_pendingNavigationID);
 }