| Index: third_party/WebKit/Source/core/loader/NavigationScheduler.cpp
|
| diff --git a/third_party/WebKit/Source/core/loader/NavigationScheduler.cpp b/third_party/WebKit/Source/core/loader/NavigationScheduler.cpp
|
| index f19b8dbad513d50b75df68d955fc6ff9c4fc3655..a3774fe667e17fe5b6586312f5efc643ddadf3f7 100644
|
| --- a/third_party/WebKit/Source/core/loader/NavigationScheduler.cpp
|
| +++ b/third_party/WebKit/Source/core/loader/NavigationScheduler.cpp
|
| @@ -154,7 +154,7 @@ class ScheduledURLNavigation : public ScheduledNavigation {
|
| protected:
|
| ScheduledURLNavigation(double delay,
|
| Document* originDocument,
|
| - const String& url,
|
| + const KURL& url,
|
| bool replacesCurrentItem,
|
| bool isLocationChange)
|
| : ScheduledNavigation(delay,
|
| @@ -185,10 +185,10 @@ class ScheduledURLNavigation : public ScheduledNavigation {
|
| frame->loader().load(request);
|
| }
|
|
|
| - String url() const { return m_url; }
|
| + KURL url() const { return m_url; }
|
|
|
| private:
|
| - String m_url;
|
| + KURL m_url;
|
| ContentSecurityPolicyDisposition m_shouldCheckMainWorldContentSecurityPolicy;
|
| };
|
|
|
| @@ -196,7 +196,7 @@ class ScheduledRedirect final : public ScheduledURLNavigation {
|
| public:
|
| static ScheduledRedirect* create(double delay,
|
| Document* originDocument,
|
| - const String& url,
|
| + const KURL& url,
|
| bool replacesCurrentItem) {
|
| return new ScheduledRedirect(delay, originDocument, url,
|
| replacesCurrentItem);
|
| @@ -225,7 +225,7 @@ class ScheduledRedirect final : public ScheduledURLNavigation {
|
| private:
|
| ScheduledRedirect(double delay,
|
| Document* originDocument,
|
| - const String& url,
|
| + const KURL& url,
|
| bool replacesCurrentItem)
|
| : ScheduledURLNavigation(delay,
|
| originDocument,
|
| @@ -239,7 +239,7 @@ class ScheduledRedirect final : public ScheduledURLNavigation {
|
| class ScheduledLocationChange final : public ScheduledURLNavigation {
|
| public:
|
| static ScheduledLocationChange* create(Document* originDocument,
|
| - const String& url,
|
| + const KURL& url,
|
| bool replacesCurrentItem) {
|
| return new ScheduledLocationChange(originDocument, url,
|
| replacesCurrentItem);
|
| @@ -247,13 +247,13 @@ class ScheduledLocationChange final : public ScheduledURLNavigation {
|
|
|
| private:
|
| ScheduledLocationChange(Document* originDocument,
|
| - const String& url,
|
| + const KURL& url,
|
| bool replacesCurrentItem)
|
| : ScheduledURLNavigation(0.0,
|
| originDocument,
|
| url,
|
| replacesCurrentItem,
|
| - !protocolIsJavaScript(url)) {}
|
| + !url.protocolIsJavaScript()) {}
|
| };
|
|
|
| class ScheduledReload final : public ScheduledNavigation {
|
| @@ -381,13 +381,13 @@ inline bool NavigationScheduler::shouldScheduleReload() const {
|
| }
|
|
|
| inline bool NavigationScheduler::shouldScheduleNavigation(
|
| - const String& url) const {
|
| + const KURL& url) const {
|
| return m_frame->page() && m_frame->isNavigationAllowed() &&
|
| - (protocolIsJavaScript(url) ||
|
| + (url.protocolIsJavaScript() ||
|
| NavigationDisablerForBeforeUnload::isNavigationAllowed());
|
| }
|
|
|
| -void NavigationScheduler::scheduleRedirect(double delay, const String& url) {
|
| +void NavigationScheduler::scheduleRedirect(double delay, const KURL& url) {
|
| if (!shouldScheduleNavigation(url))
|
| return;
|
| if (delay < 0 || delay > INT_MAX / 1000)
|
| @@ -421,7 +421,7 @@ bool NavigationScheduler::mustReplaceCurrentItem(LocalFrame* targetFrame) {
|
| }
|
|
|
| void NavigationScheduler::scheduleLocationChange(Document* originDocument,
|
| - const String& url,
|
| + const KURL& url,
|
| bool replacesCurrentItem) {
|
| if (!shouldScheduleNavigation(url))
|
| return;
|
| @@ -434,12 +434,9 @@ void NavigationScheduler::scheduleLocationChange(Document* originDocument,
|
| // minimize the navigator's ability to execute timing attacks.
|
| if (originDocument->getSecurityOrigin()->canAccess(
|
| m_frame->document()->getSecurityOrigin())) {
|
| - KURL parsedURL(ParsedURLString, url);
|
| - if (parsedURL.hasFragmentIdentifier() &&
|
| - equalIgnoringFragmentIdentifier(m_frame->document()->url(),
|
| - parsedURL)) {
|
| - FrameLoadRequest request(originDocument,
|
| - m_frame->document()->completeURL(url), "_self");
|
| + if (url.hasFragmentIdentifier() &&
|
| + equalIgnoringFragmentIdentifier(m_frame->document()->url(), url)) {
|
| + FrameLoadRequest request(originDocument, url, "_self");
|
| request.setReplacesCurrentItem(replacesCurrentItem);
|
| if (replacesCurrentItem)
|
| request.setClientRedirect(ClientRedirectPolicy::ClientRedirect);
|
|
|