summaryrefslogtreecommitdiff
path: root/chromium/content/browser/android
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2016-03-31 16:33:06 +0200
committerAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2016-04-01 12:24:17 +0000
commitf65c42f8a6395a5fd85719adda57ada167b0dab6 (patch)
tree3840d098e781d092f46d2f2df84b7163d97c362f /chromium/content/browser/android
parentd26d06ed332166d6f61a5c06ab85aee5d987b2b6 (diff)
downloadqtwebengine-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.cc15
-rw-r--r--chromium/content/browser/android/web_contents_observer_proxy.h1
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);
};