Migrate from RVO::Navigate to RFO::ReadyToCommitNavigation
These two callbacks are called at approximately the same time,
and we can use the more common one (ReadyToCommitNavigation) instead
of an outlier (Navigate).
This leaves a single client of RVO::Navigate, which can be removed
in a follow up. ChromeRenderViewObserver can be removed as well.
Bug: none
Change-Id: I0e2a046f11f451c0a1e952a44a0e84236bf93c53
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1576012
Reviewed-by: Camille Lamy <clamy@chromium.org>
Reviewed-by: David Roger <droger@chromium.org>
Commit-Queue: Dmitry Gozman <dgozman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#653175}
diff --git a/chrome/renderer/BUILD.gn b/chrome/renderer/BUILD.gn
index 44798c35..04f84d2 100644
--- a/chrome/renderer/BUILD.gn
+++ b/chrome/renderer/BUILD.gn
@@ -51,8 +51,6 @@
"chrome_render_frame_observer.h",
"chrome_render_thread_observer.cc",
"chrome_render_thread_observer.h",
- "chrome_render_view_observer.cc",
- "chrome_render_view_observer.h",
"content_settings_observer.cc",
"content_settings_observer.h",
"custom_menu_commands.h",
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
index 202376e..673b95d 100644
--- a/chrome/renderer/chrome_content_renderer_client.cc
+++ b/chrome/renderer/chrome_content_renderer_client.cc
@@ -46,7 +46,6 @@
#include "chrome/renderer/benchmarking_extension.h"
#include "chrome/renderer/chrome_render_frame_observer.h"
#include "chrome/renderer/chrome_render_thread_observer.h"
-#include "chrome/renderer/chrome_render_view_observer.h"
#include "chrome/renderer/content_settings_observer.h"
#include "chrome/renderer/loadtimes_extension_bindings.h"
#include "chrome/renderer/media/flash_embed_rewrite.h"
@@ -437,7 +436,7 @@
void ChromeContentRendererClient::RenderFrameCreated(
content::RenderFrame* render_frame) {
ChromeRenderFrameObserver* render_frame_observer =
- new ChromeRenderFrameObserver(render_frame);
+ new ChromeRenderFrameObserver(render_frame, web_cache_impl_.get());
service_manager::BinderRegistry* registry = render_frame_observer->registry();
bool should_whitelist_for_content_settings =
@@ -567,8 +566,6 @@
void ChromeContentRendererClient::RenderViewCreated(
content::RenderView* render_view) {
new prerender::PrerendererClient(render_view);
-
- new ChromeRenderViewObserver(render_view, web_cache_impl_.get());
}
SkBitmap* ChromeContentRendererClient::GetSadPluginBitmap() {
diff --git a/chrome/renderer/chrome_render_frame_observer.cc b/chrome/renderer/chrome_render_frame_observer.cc
index bc5fa16..0edcddc9 100644
--- a/chrome/renderer/chrome_render_frame_observer.cc
+++ b/chrome/renderer/chrome_render_frame_observer.cc
@@ -29,6 +29,7 @@
#include "components/crash/core/common/crash_key.h"
#include "components/offline_pages/buildflags/buildflags.h"
#include "components/translate/content/renderer/translate_helper.h"
+#include "components/web_cache/renderer/web_cache_impl.h"
#include "content/public/common/bindings_policy.h"
#include "content/public/renderer/render_frame.h"
#include "content/public/renderer/render_view.h"
@@ -137,10 +138,12 @@
} // namespace
ChromeRenderFrameObserver::ChromeRenderFrameObserver(
- content::RenderFrame* render_frame)
+ content::RenderFrame* render_frame,
+ web_cache::WebCacheImpl* web_cache_impl)
: content::RenderFrameObserver(render_frame),
translate_helper_(nullptr),
- phishing_classifier_(nullptr) {
+ phishing_classifier_(nullptr),
+ web_cache_impl_(web_cache_impl) {
render_frame->GetAssociatedInterfaceRegistry()->AddInterface(
base::Bind(&ChromeRenderFrameObserver::OnRenderFrameObserverRequest,
base::Unretained(this)));
@@ -377,6 +380,11 @@
void ChromeRenderFrameObserver::ReadyToCommitNavigation(
WebDocumentLoader* document_loader) {
+ // Execute cache clear operations that were postponed until a navigation
+ // event (including tab reload).
+ if (render_frame()->IsMainFrame() && web_cache_impl_)
+ web_cache_impl_->ExecutePendingClearCache();
+
// Let translate_helper do any preparatory work for loading a URL.
if (!translate_helper_)
return;
diff --git a/chrome/renderer/chrome_render_frame_observer.h b/chrome/renderer/chrome_render_frame_observer.h
index 65d080f..7f4d9b27 100644
--- a/chrome/renderer/chrome_render_frame_observer.h
+++ b/chrome/renderer/chrome_render_frame_observer.h
@@ -28,12 +28,17 @@
class TranslateHelper;
}
+namespace web_cache {
+class WebCacheImpl;
+}
+
// This class holds the Chrome specific parts of RenderFrame, and has the same
// lifetime.
class ChromeRenderFrameObserver : public content::RenderFrameObserver,
public chrome::mojom::ChromeRenderFrame {
public:
- explicit ChromeRenderFrameObserver(content::RenderFrame* render_frame);
+ ChromeRenderFrameObserver(content::RenderFrame* render_frame,
+ web_cache::WebCacheImpl* web_cache_impl);
~ChromeRenderFrameObserver() override;
service_manager::BinderRegistry* registry() { return ®istry_; }
@@ -105,6 +110,8 @@
translate::TranslateHelper* translate_helper_;
safe_browsing::PhishingClassifierDelegate* phishing_classifier_;
+ // Owned by ChromeContentRendererClient and outlive us.
+ web_cache::WebCacheImpl* web_cache_impl_;
#if !defined(OS_ANDROID)
// Save the JavaScript to preload if ExecuteWebUIJavaScript is invoked.
diff --git a/chrome/renderer/chrome_render_view_observer.cc b/chrome/renderer/chrome_render_view_observer.cc
deleted file mode 100644
index f38858c..0000000
--- a/chrome/renderer/chrome_render_view_observer.cc
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/renderer/chrome_render_view_observer.h"
-
-#include "components/web_cache/renderer/web_cache_impl.h"
-
-ChromeRenderViewObserver::ChromeRenderViewObserver(
- content::RenderView* render_view,
- web_cache::WebCacheImpl* web_cache_impl)
- : content::RenderViewObserver(render_view),
- web_cache_impl_(web_cache_impl) {}
-
-ChromeRenderViewObserver::~ChromeRenderViewObserver() {
-}
-
-void ChromeRenderViewObserver::Navigate(const GURL& url) {
- // Execute cache clear operations that were postponed until a navigation
- // event (including tab reload).
- if (web_cache_impl_)
- web_cache_impl_->ExecutePendingClearCache();
-}
-
-void ChromeRenderViewObserver::OnDestruct() {
- delete this;
-}
diff --git a/chrome/renderer/chrome_render_view_observer.h b/chrome/renderer/chrome_render_view_observer.h
deleted file mode 100644
index c6090ea6..0000000
--- a/chrome/renderer/chrome_render_view_observer.h
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_RENDERER_CHROME_RENDER_VIEW_OBSERVER_H_
-#define CHROME_RENDERER_CHROME_RENDER_VIEW_OBSERVER_H_
-
-#include <string>
-
-#include "base/macros.h"
-#include "content/public/common/browser_controls_state.h"
-#include "content/public/renderer/render_view_observer.h"
-#include "url/gurl.h"
-
-namespace web_cache {
-class WebCacheImpl;
-}
-
-// This class holds the Chrome specific parts of RenderView, and has the same
-// lifetime.
-class ChromeRenderViewObserver : public content::RenderViewObserver {
- public:
- // translate_helper can be NULL.
- ChromeRenderViewObserver(
- content::RenderView* render_view,
- web_cache::WebCacheImpl* web_cache_render_thread_observer);
- ~ChromeRenderViewObserver() override;
-
- private:
- // RenderViewObserver implementation.
- void Navigate(const GURL& url) override;
- void OnDestruct() override;
-
- // Determines if a host is in the strict security host set.
- bool IsStrictSecurityHost(const std::string& host);
-
- // Owned by ChromeContentRendererClient and outlive us.
- web_cache::WebCacheImpl* web_cache_impl_;
-
- DISALLOW_COPY_AND_ASSIGN(ChromeRenderViewObserver);
-};
-
-#endif // CHROME_RENDERER_CHROME_RENDER_VIEW_OBSERVER_H_