diff options
author | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2016-03-31 16:33:06 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2016-04-01 12:24:17 +0000 |
commit | f65c42f8a6395a5fd85719adda57ada167b0dab6 (patch) | |
tree | 3840d098e781d092f46d2f2df84b7163d97c362f /chromium/content/browser/android | |
parent | d26d06ed332166d6f61a5c06ab85aee5d987b2b6 (diff) | |
download | qtwebengine-chromium-f65c42f8a6395a5fd85719adda57ada167b0dab6.tar.gz |
BASELINE: Update Chromium to 49.0.2623.111
Change-Id: I5f8c7bd936a259c7229924aba755ae6064ac9240
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Diffstat (limited to 'chromium/content/browser/android')
-rw-r--r-- | chromium/content/browser/android/web_contents_observer_proxy.cc | 15 | ||||
-rw-r--r-- | chromium/content/browser/android/web_contents_observer_proxy.h | 1 |
2 files changed, 15 insertions, 1 deletions
diff --git a/chromium/content/browser/android/web_contents_observer_proxy.cc b/chromium/content/browser/android/web_contents_observer_proxy.cc index 22ab07c2ed6..d176f61f21b 100644 --- a/chromium/content/browser/android/web_contents_observer_proxy.cc +++ b/chromium/content/browser/android/web_contents_observer_proxy.cc @@ -81,6 +81,9 @@ void WebContentsObserverProxy::DidStartLoading() { ScopedJavaLocalRef<jobject> obj(java_observer_); ScopedJavaLocalRef<jstring> jstring_url( ConvertUTF8ToJavaString(env, web_contents()->GetVisibleURL().spec())); + if (auto entry = web_contents()->GetController().GetPendingEntry()) { + base_url_of_last_started_data_url_ = entry->GetBaseURLForDataURL(); + } Java_WebContentsObserverProxy_didStartLoading(env, obj.obj(), jstring_url.obj()); } @@ -90,6 +93,8 @@ void WebContentsObserverProxy::DidStopLoading() { ScopedJavaLocalRef<jobject> obj(java_observer_); std::string url_string = web_contents()->GetLastCommittedURL().spec(); SetToBaseURLForDataURLIfNeeded(&url_string); + // DidStopLoading is the last event we should get. + base_url_of_last_started_data_url_ = GURL::EmptyGURL(); ScopedJavaLocalRef<jstring> jstring_url(ConvertUTF8ToJavaString( env, url_string)); Java_WebContentsObserverProxy_didStopLoading(env, obj.obj(), @@ -304,8 +309,16 @@ void WebContentsObserverProxy::SetToBaseURLForDataURLIfNeeded( NavigationEntry* entry = web_contents()->GetController().GetLastCommittedEntry(); // Note that GetBaseURLForDataURL is only used by the Android WebView. - if (entry && !entry->GetBaseURLForDataURL().is_empty()) + // FIXME: Should we only return valid specs and "about:blank" for invalid + // ones? This may break apps. + if (entry && !entry->GetBaseURLForDataURL().is_empty()) { *url = entry->GetBaseURLForDataURL().possibly_invalid_spec(); + } else if (!base_url_of_last_started_data_url_.is_empty()) { + // NavigationController can lose the pending entry and recreate it without + // a base URL if there has been a loadUrl("javascript:...") after + // loadDataWithBaseUrl. + *url = base_url_of_last_started_data_url_.possibly_invalid_spec(); + } } bool RegisterWebContentsObserverProxy(JNIEnv* env) { diff --git a/chromium/content/browser/android/web_contents_observer_proxy.h b/chromium/content/browser/android/web_contents_observer_proxy.h index 23464053b26..e22edbbdf84 100644 --- a/chromium/content/browser/android/web_contents_observer_proxy.h +++ b/chromium/content/browser/android/web_contents_observer_proxy.h @@ -83,6 +83,7 @@ class WebContentsObserverProxy : public WebContentsObserver { bool was_ignored_by_handler); base::android::ScopedJavaGlobalRef<jobject> java_observer_; + GURL base_url_of_last_started_data_url_; DISALLOW_COPY_AND_ASSIGN(WebContentsObserverProxy); }; |