summaryrefslogtreecommitdiff
path: root/chromium/weblayer/browser/navigation_controller_impl.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-12 14:27:29 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-13 09:35:20 +0000
commitc30a6232df03e1efbd9f3b226777b07e087a1122 (patch)
treee992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/weblayer/browser/navigation_controller_impl.cc
parent7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff)
downloadqtwebengine-chromium-85-based.tar.gz
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/weblayer/browser/navigation_controller_impl.cc')
-rw-r--r--chromium/weblayer/browser/navigation_controller_impl.cc33
1 files changed, 33 insertions, 0 deletions
diff --git a/chromium/weblayer/browser/navigation_controller_impl.cc b/chromium/weblayer/browser/navigation_controller_impl.cc
index 6b9b38abadd..cabbd2cca24 100644
--- a/chromium/weblayer/browser/navigation_controller_impl.cc
+++ b/chromium/weblayer/browser/navigation_controller_impl.cc
@@ -4,6 +4,8 @@
#include "weblayer/browser/navigation_controller_impl.h"
+#include <utility>
+
#include "base/auto_reset.h"
#include "base/stl_util.h"
#include "base/strings/utf_string_conversions.h"
@@ -145,6 +147,11 @@ ScopedJavaLocalRef<jstring> NavigationControllerImpl::GetNavigationEntryTitle(
return ScopedJavaLocalRef<jstring>(base::android::ConvertUTF8ToJavaString(
env, GetNavigationEntryTitle(index)));
}
+
+bool NavigationControllerImpl::IsNavigationEntrySkippable(JNIEnv* env,
+ int index) {
+ return IsNavigationEntrySkippable(index);
+}
#endif
void NavigationControllerImpl::WillRedirectRequest(
@@ -257,6 +264,10 @@ std::string NavigationControllerImpl::GetNavigationEntryTitle(int index) {
return base::UTF16ToUTF8(entry->GetTitle());
}
+bool NavigationControllerImpl::IsNavigationEntrySkippable(int index) {
+ return web_contents()->GetController().IsEntryMarkedToBeSkipped(index);
+}
+
void NavigationControllerImpl::DidStartNavigation(
content::NavigationHandle* navigation_handle) {
if (!navigation_handle->IsInMainFrame())
@@ -353,6 +364,14 @@ void NavigationControllerImpl::DidFinishNavigation(
observer.NavigationFailed(navigation);
}
+ // Note InsertVisualStateCallback currently does not take into account
+ // any delays from surface sync, ie a frame submitted by renderer may not
+ // be displayed immediately. Such situations should be rare however, so
+ // this should be good enough for the purposes needed.
+ web_contents()->GetMainFrame()->InsertVisualStateCallback(base::BindOnce(
+ &NavigationControllerImpl::OldPageNoLongerRendered,
+ weak_ptr_factory_.GetWeakPtr(), navigation_handle->GetURL()));
+
navigation_map_.erase(navigation_map_.find(navigation_handle));
}
@@ -389,6 +408,20 @@ void NavigationControllerImpl::DidFirstVisuallyNonEmptyPaint() {
observer.OnFirstContentfulPaint();
}
+void NavigationControllerImpl::OldPageNoLongerRendered(const GURL& url,
+ bool success) {
+#if defined(OS_ANDROID)
+ TRACE_EVENT0("weblayer",
+ "Java_NavigationControllerImpl_onOldPageNoLongerRendered");
+ JNIEnv* env = AttachCurrentThread();
+ Java_NavigationControllerImpl_onOldPageNoLongerRendered(
+ env, java_controller_,
+ base::android::ConvertUTF8ToJavaString(env, url.spec()));
+#endif
+ for (auto& observer : observers_)
+ observer.OnOldPageNoLongerRendered(url);
+}
+
void NavigationControllerImpl::NotifyLoadStateChanged() {
#if defined(OS_ANDROID)
if (java_controller_) {