Eliminate RenderFrame::GetInterfaceRegistry()'
R=rockot@chromium.org Change-Id: Ice65be679658f544f46e1906b79642de5f337d67 Reviewed-on: https://chromium-review.googlesource.com/580789 Commit-Queue: Ben Goodger <ben@chromium.org> Reviewed-by: Ken Rockot <rockot@chromium.org> Cr-Commit-Position: refs/heads/master@{#489127}
This commit is contained in:
chrome/renderer
chrome_render_frame_observer.ccchrome_render_frame_observer.hcontent_settings_observer.cccontent_settings_observer.h
components
autofill
content
contextual_search
dom_distiller
spellcheck
content
public
renderer
shell
renderer
layout_test
extensions/renderer
headless/lib/renderer
@@ -122,10 +122,10 @@ ChromeRenderFrameObserver::ChromeRenderFrameObserver(
|
|||||||
: content::RenderFrameObserver(render_frame),
|
: content::RenderFrameObserver(render_frame),
|
||||||
translate_helper_(nullptr),
|
translate_helper_(nullptr),
|
||||||
phishing_classifier_(nullptr) {
|
phishing_classifier_(nullptr) {
|
||||||
render_frame->GetInterfaceRegistry()->AddInterface(
|
registry_.AddInterface(
|
||||||
base::Bind(&ChromeRenderFrameObserver::OnImageContextMenuRendererRequest,
|
base::Bind(&ChromeRenderFrameObserver::OnImageContextMenuRendererRequest,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
render_frame->GetInterfaceRegistry()->AddInterface(
|
registry_.AddInterface(
|
||||||
base::Bind(&ChromeRenderFrameObserver::OnThumbnailCapturerRequest,
|
base::Bind(&ChromeRenderFrameObserver::OnThumbnailCapturerRequest,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
|
||||||
@@ -145,6 +145,12 @@ ChromeRenderFrameObserver::ChromeRenderFrameObserver(
|
|||||||
ChromeRenderFrameObserver::~ChromeRenderFrameObserver() {
|
ChromeRenderFrameObserver::~ChromeRenderFrameObserver() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ChromeRenderFrameObserver::OnInterfaceRequestForFrame(
|
||||||
|
const std::string& interface_name,
|
||||||
|
mojo::ScopedMessagePipeHandle* interface_pipe) {
|
||||||
|
registry_.TryBindInterface(interface_name, interface_pipe);
|
||||||
|
}
|
||||||
|
|
||||||
bool ChromeRenderFrameObserver::OnMessageReceived(const IPC::Message& message) {
|
bool ChromeRenderFrameObserver::OnMessageReceived(const IPC::Message& message) {
|
||||||
// Filter only.
|
// Filter only.
|
||||||
bool handled = true;
|
bool handled = true;
|
||||||
|
@@ -12,6 +12,7 @@
|
|||||||
#include "chrome/common/thumbnail_capturer.mojom.h"
|
#include "chrome/common/thumbnail_capturer.mojom.h"
|
||||||
#include "content/public/renderer/render_frame_observer.h"
|
#include "content/public/renderer/render_frame_observer.h"
|
||||||
#include "mojo/public/cpp/bindings/binding_set.h"
|
#include "mojo/public/cpp/bindings/binding_set.h"
|
||||||
|
#include "services/service_manager/public/cpp/binder_registry.h"
|
||||||
|
|
||||||
namespace gfx {
|
namespace gfx {
|
||||||
class Size;
|
class Size;
|
||||||
@@ -39,6 +40,9 @@ class ChromeRenderFrameObserver
|
|||||||
enum TextCaptureType { PRELIMINARY_CAPTURE, FINAL_CAPTURE };
|
enum TextCaptureType { PRELIMINARY_CAPTURE, FINAL_CAPTURE };
|
||||||
|
|
||||||
// RenderFrameObserver implementation.
|
// RenderFrameObserver implementation.
|
||||||
|
void OnInterfaceRequestForFrame(
|
||||||
|
const std::string& interface_name,
|
||||||
|
mojo::ScopedMessagePipeHandle* interface_pipe) override;
|
||||||
bool OnMessageReceived(const IPC::Message& message) override;
|
bool OnMessageReceived(const IPC::Message& message) override;
|
||||||
void DidStartProvisionalLoad(blink::WebDataSource* data_source) override;
|
void DidStartProvisionalLoad(blink::WebDataSource* data_source) override;
|
||||||
void DidFinishLoad() override;
|
void DidFinishLoad() override;
|
||||||
@@ -93,6 +97,8 @@ class ChromeRenderFrameObserver
|
|||||||
mojo::BindingSet<chrome::mojom::ThumbnailCapturer>
|
mojo::BindingSet<chrome::mojom::ThumbnailCapturer>
|
||||||
thumbnail_capturer_bindings_;
|
thumbnail_capturer_bindings_;
|
||||||
|
|
||||||
|
service_manager::BinderRegistry registry_;
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(ChromeRenderFrameObserver);
|
DISALLOW_COPY_AND_ASSIGN(ChromeRenderFrameObserver);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -106,7 +106,7 @@ ContentSettingsObserver::ContentSettingsObserver(
|
|||||||
ClearBlockedContentSettings();
|
ClearBlockedContentSettings();
|
||||||
render_frame->GetWebFrame()->SetContentSettingsClient(this);
|
render_frame->GetWebFrame()->SetContentSettingsClient(this);
|
||||||
|
|
||||||
render_frame->GetInterfaceRegistry()->AddInterface(
|
registry_.AddInterface(
|
||||||
base::Bind(&ContentSettingsObserver::OnInsecureContentRendererRequest,
|
base::Bind(&ContentSettingsObserver::OnInsecureContentRendererRequest,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
|
||||||
@@ -160,6 +160,12 @@ void ContentSettingsObserver::DidBlockContentType(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ContentSettingsObserver::OnInterfaceRequestForFrame(
|
||||||
|
const std::string& interface_name,
|
||||||
|
mojo::ScopedMessagePipeHandle* interface_pipe) {
|
||||||
|
registry_.TryBindInterface(interface_name, interface_pipe);
|
||||||
|
}
|
||||||
|
|
||||||
bool ContentSettingsObserver::OnMessageReceived(const IPC::Message& message) {
|
bool ContentSettingsObserver::OnMessageReceived(const IPC::Message& message) {
|
||||||
bool handled = true;
|
bool handled = true;
|
||||||
IPC_BEGIN_MESSAGE_MAP(ContentSettingsObserver, message)
|
IPC_BEGIN_MESSAGE_MAP(ContentSettingsObserver, message)
|
||||||
|
@@ -19,6 +19,7 @@
|
|||||||
#include "content/public/renderer/render_frame_observer_tracker.h"
|
#include "content/public/renderer/render_frame_observer_tracker.h"
|
||||||
#include "extensions/features/features.h"
|
#include "extensions/features/features.h"
|
||||||
#include "mojo/public/cpp/bindings/binding_set.h"
|
#include "mojo/public/cpp/bindings/binding_set.h"
|
||||||
|
#include "services/service_manager/public/cpp/binder_registry.h"
|
||||||
#include "third_party/WebKit/public/platform/WebContentSettingsClient.h"
|
#include "third_party/WebKit/public/platform/WebContentSettingsClient.h"
|
||||||
#include "url/gurl.h"
|
#include "url/gurl.h"
|
||||||
|
|
||||||
@@ -95,6 +96,9 @@ class ContentSettingsObserver
|
|||||||
FRIEND_TEST_ALL_PREFIXES(ChromeRenderViewTest, PluginsTemporarilyAllowed);
|
FRIEND_TEST_ALL_PREFIXES(ChromeRenderViewTest, PluginsTemporarilyAllowed);
|
||||||
|
|
||||||
// RenderFrameObserver implementation.
|
// RenderFrameObserver implementation.
|
||||||
|
void OnInterfaceRequestForFrame(
|
||||||
|
const std::string& interface_name,
|
||||||
|
mojo::ScopedMessagePipeHandle* interface_pipe) override;
|
||||||
bool OnMessageReceived(const IPC::Message& message) override;
|
bool OnMessageReceived(const IPC::Message& message) override;
|
||||||
void DidCommitProvisionalLoad(bool is_new_navigation,
|
void DidCommitProvisionalLoad(bool is_new_navigation,
|
||||||
bool is_same_document_navigation) override;
|
bool is_same_document_navigation) override;
|
||||||
@@ -170,6 +174,8 @@ class ContentSettingsObserver
|
|||||||
mojo::BindingSet<chrome::mojom::InsecureContentRenderer>
|
mojo::BindingSet<chrome::mojom::InsecureContentRenderer>
|
||||||
insecure_content_renderer_bindings_;
|
insecure_content_renderer_bindings_;
|
||||||
|
|
||||||
|
service_manager::BinderRegistry registry_;
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(ContentSettingsObserver);
|
DISALLOW_COPY_AND_ASSIGN(ContentSettingsObserver);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -161,8 +161,7 @@ AutofillAgent::AutofillAgent(content::RenderFrame* render_frame,
|
|||||||
render_frame->GetWebFrame()->SetAutofillClient(this);
|
render_frame->GetWebFrame()->SetAutofillClient(this);
|
||||||
password_autofill_agent->SetAutofillAgent(this);
|
password_autofill_agent->SetAutofillAgent(this);
|
||||||
|
|
||||||
// AutofillAgent is guaranteed to outlive |render_frame|.
|
registry_.AddInterface(
|
||||||
render_frame->GetInterfaceRegistry()->AddInterface(
|
|
||||||
base::Bind(&AutofillAgent::BindRequest, base::Unretained(this)));
|
base::Bind(&AutofillAgent::BindRequest, base::Unretained(this)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -178,6 +177,12 @@ bool AutofillAgent::FormDataCompare::operator()(const FormData& lhs,
|
|||||||
std::tie(rhs.name, rhs.origin, rhs.action, rhs.is_form_tag);
|
std::tie(rhs.name, rhs.origin, rhs.action, rhs.is_form_tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AutofillAgent::OnInterfaceRequestForFrame(
|
||||||
|
const std::string& interface_name,
|
||||||
|
mojo::ScopedMessagePipeHandle* interface_pipe) {
|
||||||
|
registry_.TryBindInterface(interface_name, interface_pipe);
|
||||||
|
}
|
||||||
|
|
||||||
void AutofillAgent::DidCommitProvisionalLoad(bool is_new_navigation,
|
void AutofillAgent::DidCommitProvisionalLoad(bool is_new_navigation,
|
||||||
bool is_same_document_navigation) {
|
bool is_same_document_navigation) {
|
||||||
blink::WebFrame* frame = render_frame()->GetWebFrame();
|
blink::WebFrame* frame = render_frame()->GetWebFrame();
|
||||||
|
@@ -20,6 +20,7 @@
|
|||||||
#include "components/autofill/content/renderer/page_click_tracker.h"
|
#include "components/autofill/content/renderer/page_click_tracker.h"
|
||||||
#include "content/public/renderer/render_frame_observer.h"
|
#include "content/public/renderer/render_frame_observer.h"
|
||||||
#include "mojo/public/cpp/bindings/binding.h"
|
#include "mojo/public/cpp/bindings/binding.h"
|
||||||
|
#include "services/service_manager/public/cpp/binder_registry.h"
|
||||||
#include "third_party/WebKit/public/web/WebAutofillClient.h"
|
#include "third_party/WebKit/public/web/WebAutofillClient.h"
|
||||||
#include "third_party/WebKit/public/web/WebFormControlElement.h"
|
#include "third_party/WebKit/public/web/WebFormControlElement.h"
|
||||||
#include "third_party/WebKit/public/web/WebFormElement.h"
|
#include "third_party/WebKit/public/web/WebFormElement.h"
|
||||||
@@ -131,6 +132,9 @@ class AutofillAgent : public content::RenderFrameObserver,
|
|||||||
};
|
};
|
||||||
|
|
||||||
// content::RenderFrameObserver:
|
// content::RenderFrameObserver:
|
||||||
|
void OnInterfaceRequestForFrame(
|
||||||
|
const std::string& interface_name,
|
||||||
|
mojo::ScopedMessagePipeHandle* interface_pipe) override;
|
||||||
void DidCommitProvisionalLoad(bool is_new_navigation,
|
void DidCommitProvisionalLoad(bool is_new_navigation,
|
||||||
bool is_same_document_navigation) override;
|
bool is_same_document_navigation) override;
|
||||||
void DidFinishDocumentLoad() override;
|
void DidFinishDocumentLoad() override;
|
||||||
@@ -292,6 +296,8 @@ class AutofillAgent : public content::RenderFrameObserver,
|
|||||||
|
|
||||||
mojom::AutofillDriverPtr autofill_driver_;
|
mojom::AutofillDriverPtr autofill_driver_;
|
||||||
|
|
||||||
|
service_manager::BinderRegistry registry_;
|
||||||
|
|
||||||
base::WeakPtrFactory<AutofillAgent> weak_ptr_factory_;
|
base::WeakPtrFactory<AutofillAgent> weak_ptr_factory_;
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(AutofillAgent);
|
DISALLOW_COPY_AND_ASSIGN(AutofillAgent);
|
||||||
|
@@ -687,8 +687,7 @@ PasswordAutofillAgent::PasswordAutofillAgent(content::RenderFrame* render_frame)
|
|||||||
checked_safe_browsing_reputation_(false),
|
checked_safe_browsing_reputation_(false),
|
||||||
binding_(this),
|
binding_(this),
|
||||||
form_element_observer_(nullptr) {
|
form_element_observer_(nullptr) {
|
||||||
// PasswordAutofillAgent is guaranteed to outlive |render_frame|.
|
registry_.AddInterface(
|
||||||
render_frame->GetInterfaceRegistry()->AddInterface(
|
|
||||||
base::Bind(&PasswordAutofillAgent::BindRequest, base::Unretained(this)));
|
base::Bind(&PasswordAutofillAgent::BindRequest, base::Unretained(this)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1282,6 +1281,12 @@ void PasswordAutofillAgent::SendPasswordForms(bool only_visible) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PasswordAutofillAgent::OnInterfaceRequestForFrame(
|
||||||
|
const std::string& interface_name,
|
||||||
|
mojo::ScopedMessagePipeHandle* interface_pipe) {
|
||||||
|
registry_.TryBindInterface(interface_name, interface_pipe);
|
||||||
|
}
|
||||||
|
|
||||||
void PasswordAutofillAgent::DidFinishDocumentLoad() {
|
void PasswordAutofillAgent::DidFinishDocumentLoad() {
|
||||||
// The |frame| contents have been parsed, but not yet rendered. Let the
|
// The |frame| contents have been parsed, but not yet rendered. Let the
|
||||||
// PasswordManager know that forms are loaded, even though we can't yet tell
|
// PasswordManager know that forms are loaded, even though we can't yet tell
|
||||||
|
@@ -22,6 +22,7 @@
|
|||||||
#include "content/public/renderer/render_frame_observer.h"
|
#include "content/public/renderer/render_frame_observer.h"
|
||||||
#include "content/public/renderer/render_view_observer.h"
|
#include "content/public/renderer/render_view_observer.h"
|
||||||
#include "mojo/public/cpp/bindings/binding.h"
|
#include "mojo/public/cpp/bindings/binding.h"
|
||||||
|
#include "services/service_manager/public/cpp/binder_registry.h"
|
||||||
#include "third_party/WebKit/public/web/WebInputElement.h"
|
#include "third_party/WebKit/public/web/WebInputElement.h"
|
||||||
|
|
||||||
namespace blink {
|
namespace blink {
|
||||||
@@ -201,6 +202,9 @@ class PasswordAutofillAgent : public content::RenderFrameObserver,
|
|||||||
};
|
};
|
||||||
|
|
||||||
// RenderFrameObserver:
|
// RenderFrameObserver:
|
||||||
|
void OnInterfaceRequestForFrame(
|
||||||
|
const std::string& interface_name,
|
||||||
|
mojo::ScopedMessagePipeHandle* interface_pipe) override;
|
||||||
void DidFinishDocumentLoad() override;
|
void DidFinishDocumentLoad() override;
|
||||||
void DidFinishLoad() override;
|
void DidFinishLoad() override;
|
||||||
void FrameDetached() override;
|
void FrameDetached() override;
|
||||||
@@ -312,6 +316,8 @@ class PasswordAutofillAgent : public content::RenderFrameObserver,
|
|||||||
|
|
||||||
blink::WebFormElementObserver* form_element_observer_;
|
blink::WebFormElementObserver* form_element_observer_;
|
||||||
|
|
||||||
|
service_manager::BinderRegistry registry_;
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(PasswordAutofillAgent);
|
DISALLOW_COPY_AND_ASSIGN(PasswordAutofillAgent);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -167,9 +167,8 @@ PasswordGenerationAgent::PasswordGenerationAgent(
|
|||||||
password_agent_(password_agent),
|
password_agent_(password_agent),
|
||||||
binding_(this) {
|
binding_(this) {
|
||||||
LogBoolean(Logger::STRING_GENERATION_RENDERER_ENABLED, enabled_);
|
LogBoolean(Logger::STRING_GENERATION_RENDERER_ENABLED, enabled_);
|
||||||
// PasswordGenerationAgent is guaranteed to outlive |render_frame|.
|
registry_.AddInterface(base::Bind(&PasswordGenerationAgent::BindRequest,
|
||||||
render_frame->GetInterfaceRegistry()->AddInterface(base::Bind(
|
base::Unretained(this)));
|
||||||
&PasswordGenerationAgent::BindRequest, base::Unretained(this)));
|
|
||||||
}
|
}
|
||||||
PasswordGenerationAgent::~PasswordGenerationAgent() {}
|
PasswordGenerationAgent::~PasswordGenerationAgent() {}
|
||||||
|
|
||||||
@@ -178,6 +177,12 @@ void PasswordGenerationAgent::BindRequest(
|
|||||||
binding_.Bind(std::move(request));
|
binding_.Bind(std::move(request));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PasswordGenerationAgent::OnInterfaceRequestForFrame(
|
||||||
|
const std::string& interface_name,
|
||||||
|
mojo::ScopedMessagePipeHandle* interface_pipe) {
|
||||||
|
registry_.TryBindInterface(interface_name, interface_pipe);
|
||||||
|
}
|
||||||
|
|
||||||
void PasswordGenerationAgent::DidFinishDocumentLoad() {
|
void PasswordGenerationAgent::DidFinishDocumentLoad() {
|
||||||
// Update stats for main frame navigation.
|
// Update stats for main frame navigation.
|
||||||
if (!render_frame()->GetWebFrame()->Parent()) {
|
if (!render_frame()->GetWebFrame()->Parent()) {
|
||||||
|
@@ -19,6 +19,7 @@
|
|||||||
#include "components/autofill/content/renderer/renderer_save_password_progress_logger.h"
|
#include "components/autofill/content/renderer/renderer_save_password_progress_logger.h"
|
||||||
#include "content/public/renderer/render_frame_observer.h"
|
#include "content/public/renderer/render_frame_observer.h"
|
||||||
#include "mojo/public/cpp/bindings/binding.h"
|
#include "mojo/public/cpp/bindings/binding.h"
|
||||||
|
#include "services/service_manager/public/cpp/binder_registry.h"
|
||||||
#include "third_party/WebKit/public/web/WebInputElement.h"
|
#include "third_party/WebKit/public/web/WebInputElement.h"
|
||||||
#include "url/gurl.h"
|
#include "url/gurl.h"
|
||||||
|
|
||||||
@@ -87,6 +88,9 @@ class PasswordGenerationAgent : public content::RenderFrameObserver,
|
|||||||
typedef std::vector<AccountCreationFormData> AccountCreationFormDataList;
|
typedef std::vector<AccountCreationFormData> AccountCreationFormDataList;
|
||||||
|
|
||||||
// RenderFrameObserver:
|
// RenderFrameObserver:
|
||||||
|
void OnInterfaceRequestForFrame(
|
||||||
|
const std::string& interface_name,
|
||||||
|
mojo::ScopedMessagePipeHandle* interface_pipe) override;
|
||||||
void DidFinishDocumentLoad() override;
|
void DidFinishDocumentLoad() override;
|
||||||
void DidFinishLoad() override;
|
void DidFinishLoad() override;
|
||||||
void OnDestruct() override;
|
void OnDestruct() override;
|
||||||
@@ -193,6 +197,8 @@ class PasswordGenerationAgent : public content::RenderFrameObserver,
|
|||||||
|
|
||||||
mojo::Binding<mojom::PasswordGenerationAgent> binding_;
|
mojo::Binding<mojom::PasswordGenerationAgent> binding_;
|
||||||
|
|
||||||
|
service_manager::BinderRegistry registry_;
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(PasswordGenerationAgent);
|
DISALLOW_COPY_AND_ASSIGN(PasswordGenerationAgent);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -25,13 +25,19 @@ OverlayJsRenderFrameObserver::OverlayJsRenderFrameObserver(
|
|||||||
|
|
||||||
OverlayJsRenderFrameObserver::~OverlayJsRenderFrameObserver() {}
|
OverlayJsRenderFrameObserver::~OverlayJsRenderFrameObserver() {}
|
||||||
|
|
||||||
|
void OverlayJsRenderFrameObserver::OnInterfaceRequestForFrame(
|
||||||
|
const std::string& interface_name,
|
||||||
|
mojo::ScopedMessagePipeHandle* interface_pipe) {
|
||||||
|
registry_.TryBindInterface(interface_name, interface_pipe);
|
||||||
|
}
|
||||||
|
|
||||||
void OverlayJsRenderFrameObserver::DidStartProvisionalLoad(
|
void OverlayJsRenderFrameObserver::DidStartProvisionalLoad(
|
||||||
blink::WebDataSource* data_source) {
|
blink::WebDataSource* data_source) {
|
||||||
RegisterMojoInterface();
|
RegisterMojoInterface();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OverlayJsRenderFrameObserver::RegisterMojoInterface() {
|
void OverlayJsRenderFrameObserver::RegisterMojoInterface() {
|
||||||
render_frame()->GetInterfaceRegistry()->AddInterface(base::Bind(
|
registry_.AddInterface(base::Bind(
|
||||||
&OverlayJsRenderFrameObserver::CreateOverlayPageNotifierService,
|
&OverlayJsRenderFrameObserver::CreateOverlayPageNotifierService,
|
||||||
weak_factory_.GetWeakPtr()));
|
weak_factory_.GetWeakPtr()));
|
||||||
}
|
}
|
||||||
@@ -62,11 +68,7 @@ void OverlayJsRenderFrameObserver::DidFinishLoad() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void OverlayJsRenderFrameObserver::DestroyOverlayPageNotifierService() {
|
void OverlayJsRenderFrameObserver::DestroyOverlayPageNotifierService() {
|
||||||
if (render_frame()) {
|
registry_.RemoveInterface<mojom::OverlayPageNotifierService>();
|
||||||
render_frame()
|
|
||||||
->GetInterfaceRegistry()
|
|
||||||
->RemoveInterface<mojom::OverlayPageNotifierService>();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OverlayJsRenderFrameObserver::OnDestruct() {
|
void OverlayJsRenderFrameObserver::OnDestruct() {
|
||||||
|
@@ -10,6 +10,7 @@
|
|||||||
#include "components/contextual_search/common/overlay_page_notifier_service.mojom.h"
|
#include "components/contextual_search/common/overlay_page_notifier_service.mojom.h"
|
||||||
#include "content/public/renderer/render_frame.h"
|
#include "content/public/renderer/render_frame.h"
|
||||||
#include "content/public/renderer/render_frame_observer.h"
|
#include "content/public/renderer/render_frame_observer.h"
|
||||||
|
#include "services/service_manager/public/cpp/binder_registry.h"
|
||||||
#include "third_party/WebKit/public/web/WebLocalFrame.h"
|
#include "third_party/WebKit/public/web/WebLocalFrame.h"
|
||||||
#include "v8/include/v8.h"
|
#include "v8/include/v8.h"
|
||||||
|
|
||||||
@@ -25,6 +26,9 @@ class OverlayJsRenderFrameObserver : public content::RenderFrameObserver {
|
|||||||
~OverlayJsRenderFrameObserver() override;
|
~OverlayJsRenderFrameObserver() override;
|
||||||
|
|
||||||
// RenderFrameObserver implementation.
|
// RenderFrameObserver implementation.
|
||||||
|
void OnInterfaceRequestForFrame(
|
||||||
|
const std::string& interface_name,
|
||||||
|
mojo::ScopedMessagePipeHandle* interface_pipe) override;
|
||||||
void DidStartProvisionalLoad(blink::WebDataSource* data_source) override;
|
void DidStartProvisionalLoad(blink::WebDataSource* data_source) override;
|
||||||
void DidClearWindowObject() override;
|
void DidClearWindowObject() override;
|
||||||
void DidFinishLoad() override;
|
void DidFinishLoad() override;
|
||||||
@@ -49,6 +53,8 @@ class OverlayJsRenderFrameObserver : public content::RenderFrameObserver {
|
|||||||
// Track if the current page is presented in the contextual search overlay.
|
// Track if the current page is presented in the contextual search overlay.
|
||||||
bool is_contextual_search_overlay_;
|
bool is_contextual_search_overlay_;
|
||||||
|
|
||||||
|
service_manager::BinderRegistry registry_;
|
||||||
|
|
||||||
base::WeakPtrFactory<OverlayJsRenderFrameObserver> weak_factory_;
|
base::WeakPtrFactory<OverlayJsRenderFrameObserver> weak_factory_;
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(OverlayJsRenderFrameObserver);
|
DISALLOW_COPY_AND_ASSIGN(OverlayJsRenderFrameObserver);
|
||||||
|
@@ -27,6 +27,12 @@ DistillerJsRenderFrameObserver::DistillerJsRenderFrameObserver(
|
|||||||
|
|
||||||
DistillerJsRenderFrameObserver::~DistillerJsRenderFrameObserver() {}
|
DistillerJsRenderFrameObserver::~DistillerJsRenderFrameObserver() {}
|
||||||
|
|
||||||
|
void DistillerJsRenderFrameObserver::OnInterfaceRequestForFrame(
|
||||||
|
const std::string& interface_name,
|
||||||
|
mojo::ScopedMessagePipeHandle* interface_pipe) {
|
||||||
|
registry_.TryBindInterface(interface_name, interface_pipe);
|
||||||
|
}
|
||||||
|
|
||||||
void DistillerJsRenderFrameObserver::DidStartProvisionalLoad(
|
void DistillerJsRenderFrameObserver::DidStartProvisionalLoad(
|
||||||
blink::WebDataSource* data_source) {
|
blink::WebDataSource* data_source) {
|
||||||
RegisterMojoInterface();
|
RegisterMojoInterface();
|
||||||
@@ -36,9 +42,7 @@ void DistillerJsRenderFrameObserver::DidFinishLoad() {
|
|||||||
// If no message about the distilled page was received at this point, there
|
// If no message about the distilled page was received at this point, there
|
||||||
// will not be one; remove the mojom::DistillerPageNotifierService from the
|
// will not be one; remove the mojom::DistillerPageNotifierService from the
|
||||||
// registry.
|
// registry.
|
||||||
render_frame()
|
registry_.RemoveInterface<mojom::DistillerPageNotifierService>();
|
||||||
->GetInterfaceRegistry()
|
|
||||||
->RemoveInterface<mojom::DistillerPageNotifierService>();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DistillerJsRenderFrameObserver::DidCreateScriptContext(
|
void DistillerJsRenderFrameObserver::DidCreateScriptContext(
|
||||||
@@ -54,7 +58,7 @@ void DistillerJsRenderFrameObserver::DidCreateScriptContext(
|
|||||||
}
|
}
|
||||||
|
|
||||||
void DistillerJsRenderFrameObserver::RegisterMojoInterface() {
|
void DistillerJsRenderFrameObserver::RegisterMojoInterface() {
|
||||||
render_frame()->GetInterfaceRegistry()->AddInterface(base::Bind(
|
registry_.AddInterface(base::Bind(
|
||||||
&DistillerJsRenderFrameObserver::CreateDistillerPageNotifierService,
|
&DistillerJsRenderFrameObserver::CreateDistillerPageNotifierService,
|
||||||
weak_factory_.GetWeakPtr()));
|
weak_factory_.GetWeakPtr()));
|
||||||
}
|
}
|
||||||
|
@@ -11,6 +11,7 @@
|
|||||||
#include "components/dom_distiller/content/renderer/distiller_page_notifier_service_impl.h"
|
#include "components/dom_distiller/content/renderer/distiller_page_notifier_service_impl.h"
|
||||||
#include "content/public/renderer/render_frame.h"
|
#include "content/public/renderer/render_frame.h"
|
||||||
#include "content/public/renderer/render_frame_observer.h"
|
#include "content/public/renderer/render_frame_observer.h"
|
||||||
|
#include "services/service_manager/public/cpp/binder_registry.h"
|
||||||
#include "third_party/WebKit/public/web/WebLocalFrame.h"
|
#include "third_party/WebKit/public/web/WebLocalFrame.h"
|
||||||
#include "v8/include/v8.h"
|
#include "v8/include/v8.h"
|
||||||
|
|
||||||
@@ -27,6 +28,9 @@ class DistillerJsRenderFrameObserver : public content::RenderFrameObserver {
|
|||||||
~DistillerJsRenderFrameObserver() override;
|
~DistillerJsRenderFrameObserver() override;
|
||||||
|
|
||||||
// RenderFrameObserver implementation.
|
// RenderFrameObserver implementation.
|
||||||
|
void OnInterfaceRequestForFrame(
|
||||||
|
const std::string& interface_name,
|
||||||
|
mojo::ScopedMessagePipeHandle* interface_pipe) override;
|
||||||
void DidStartProvisionalLoad(blink::WebDataSource* data_source) override;
|
void DidStartProvisionalLoad(blink::WebDataSource* data_source) override;
|
||||||
void DidFinishLoad() override;
|
void DidFinishLoad() override;
|
||||||
void DidCreateScriptContext(v8::Local<v8::Context> context,
|
void DidCreateScriptContext(v8::Local<v8::Context> context,
|
||||||
@@ -51,6 +55,8 @@ class DistillerJsRenderFrameObserver : public content::RenderFrameObserver {
|
|||||||
// Track if the current page is distilled. This is needed for testing.
|
// Track if the current page is distilled. This is needed for testing.
|
||||||
bool is_distiller_page_;
|
bool is_distiller_page_;
|
||||||
|
|
||||||
|
service_manager::BinderRegistry registry_;
|
||||||
|
|
||||||
// Handle to "distiller" JavaScript object functionality.
|
// Handle to "distiller" JavaScript object functionality.
|
||||||
std::unique_ptr<DistillerNativeJavaScript> native_javascript_handle_;
|
std::unique_ptr<DistillerNativeJavaScript> native_javascript_handle_;
|
||||||
base::WeakPtrFactory<DistillerJsRenderFrameObserver> weak_factory_;
|
base::WeakPtrFactory<DistillerJsRenderFrameObserver> weak_factory_;
|
||||||
|
@@ -29,13 +29,19 @@ SpellCheckPanel::SpellCheckPanel(content::RenderFrame* render_frame)
|
|||||||
: content::RenderFrameObserver(render_frame),
|
: content::RenderFrameObserver(render_frame),
|
||||||
spelling_panel_visible_(false) {
|
spelling_panel_visible_(false) {
|
||||||
DCHECK(render_frame);
|
DCHECK(render_frame);
|
||||||
render_frame->GetInterfaceRegistry()->AddInterface(base::Bind(
|
registry_.AddInterface(base::Bind(&SpellCheckPanel::SpellCheckPanelRequest,
|
||||||
&SpellCheckPanel::SpellCheckPanelRequest, base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
render_frame->GetWebFrame()->SetSpellCheckPanelHostClient(this);
|
render_frame->GetWebFrame()->SetSpellCheckPanelHostClient(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
SpellCheckPanel::~SpellCheckPanel() = default;
|
SpellCheckPanel::~SpellCheckPanel() = default;
|
||||||
|
|
||||||
|
void SpellCheckPanel::OnInterfaceRequestForFrame(
|
||||||
|
const std::string& interface_name,
|
||||||
|
mojo::ScopedMessagePipeHandle* interface_pipe) {
|
||||||
|
registry_.TryBindInterface(interface_name, interface_pipe);
|
||||||
|
}
|
||||||
|
|
||||||
void SpellCheckPanel::OnDestruct() {
|
void SpellCheckPanel::OnDestruct() {
|
||||||
delete this;
|
delete this;
|
||||||
}
|
}
|
||||||
|
@@ -10,6 +10,7 @@
|
|||||||
#include "components/spellcheck/spellcheck_build_features.h"
|
#include "components/spellcheck/spellcheck_build_features.h"
|
||||||
#include "content/public/renderer/render_frame_observer.h"
|
#include "content/public/renderer/render_frame_observer.h"
|
||||||
#include "mojo/public/cpp/bindings/binding_set.h"
|
#include "mojo/public/cpp/bindings/binding_set.h"
|
||||||
|
#include "services/service_manager/public/cpp/binder_registry.h"
|
||||||
#include "third_party/WebKit/public/platform/WebSpellCheckPanelHostClient.h"
|
#include "third_party/WebKit/public/platform/WebSpellCheckPanelHostClient.h"
|
||||||
|
|
||||||
#if !BUILDFLAG(HAS_SPELLCHECK_PANEL)
|
#if !BUILDFLAG(HAS_SPELLCHECK_PANEL)
|
||||||
@@ -25,6 +26,9 @@ class SpellCheckPanel : public content::RenderFrameObserver,
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
// content::RenderFrameObserver:
|
// content::RenderFrameObserver:
|
||||||
|
void OnInterfaceRequestForFrame(
|
||||||
|
const std::string& interface_name,
|
||||||
|
mojo::ScopedMessagePipeHandle* interface_pipe) override;
|
||||||
void OnDestruct() override;
|
void OnDestruct() override;
|
||||||
|
|
||||||
// blink::WebSpellCheckPanelHostClient:
|
// blink::WebSpellCheckPanelHostClient:
|
||||||
@@ -47,6 +51,8 @@ class SpellCheckPanel : public content::RenderFrameObserver,
|
|||||||
// True if the browser is showing the spelling panel.
|
// True if the browser is showing the spelling panel.
|
||||||
bool spelling_panel_visible_;
|
bool spelling_panel_visible_;
|
||||||
|
|
||||||
|
service_manager::BinderRegistry registry_;
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(SpellCheckPanel);
|
DISALLOW_COPY_AND_ASSIGN(SpellCheckPanel);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -163,9 +163,11 @@ class CONTENT_EXPORT RenderFrame : public IPC::Listener,
|
|||||||
// Return true if this frame is hidden.
|
// Return true if this frame is hidden.
|
||||||
virtual bool IsHidden() = 0;
|
virtual bool IsHidden() = 0;
|
||||||
|
|
||||||
// Returns the BinderRegistry that this process uses to expose interfaces
|
// Ask the RenderFrame (or its observers) to bind a request for
|
||||||
// to the application running in this frame.
|
// |interface_name| to |interface_pipe|.
|
||||||
virtual service_manager::BinderRegistry* GetInterfaceRegistry() = 0;
|
virtual void BindLocalInterface(
|
||||||
|
const std::string& interface_name,
|
||||||
|
mojo::ScopedMessagePipeHandle interface_pipe) = 0;
|
||||||
|
|
||||||
// Returns the InterfaceProvider that this process can use to bind
|
// Returns the InterfaceProvider that this process can use to bind
|
||||||
// interfaces exposed to it by the application running in this frame.
|
// interfaces exposed to it by the application running in this frame.
|
||||||
|
@@ -13,6 +13,7 @@
|
|||||||
#include "content/common/content_export.h"
|
#include "content/common/content_export.h"
|
||||||
#include "ipc/ipc_listener.h"
|
#include "ipc/ipc_listener.h"
|
||||||
#include "ipc/ipc_sender.h"
|
#include "ipc/ipc_sender.h"
|
||||||
|
#include "mojo/public/cpp/system/message_pipe.h"
|
||||||
#include "third_party/WebKit/public/platform/WebLoadingBehaviorFlag.h"
|
#include "third_party/WebKit/public/platform/WebLoadingBehaviorFlag.h"
|
||||||
#include "third_party/WebKit/public/platform/WebVector.h"
|
#include "third_party/WebKit/public/platform/WebVector.h"
|
||||||
#include "third_party/WebKit/public/web/WebMeaningfulLayout.h"
|
#include "third_party/WebKit/public/web/WebMeaningfulLayout.h"
|
||||||
@@ -131,6 +132,12 @@ class CONTENT_EXPORT RenderFrameObserver : public IPC::Listener,
|
|||||||
// Called when a worker fetch context will be created.
|
// Called when a worker fetch context will be created.
|
||||||
virtual void WillCreateWorkerFetchContext(blink::WebWorkerFetchContext*) {}
|
virtual void WillCreateWorkerFetchContext(blink::WebWorkerFetchContext*) {}
|
||||||
|
|
||||||
|
// Called to give the embedder an opportunity to bind an interface request
|
||||||
|
// for a frame. If the request can be bound, |interface_pipe| will be taken.
|
||||||
|
virtual void OnInterfaceRequestForFrame(
|
||||||
|
const std::string& interface_name,
|
||||||
|
mojo::ScopedMessagePipeHandle* interface_pipe) {}
|
||||||
|
|
||||||
// IPC::Listener implementation.
|
// IPC::Listener implementation.
|
||||||
bool OnMessageReceived(const IPC::Message& message) override;
|
bool OnMessageReceived(const IPC::Message& message) override;
|
||||||
|
|
||||||
|
@@ -1201,13 +1201,12 @@ RenderFrameImpl::RenderFrameImpl(const CreateParams& params)
|
|||||||
base::Bind(&RenderFrameImpl::RequestOverlayRoutingToken,
|
base::Bind(&RenderFrameImpl::RequestOverlayRoutingToken,
|
||||||
base::Unretained(this))),
|
base::Unretained(this))),
|
||||||
weak_factory_(this) {
|
weak_factory_(this) {
|
||||||
interface_registry_ = base::MakeUnique<service_manager::BinderRegistry>();
|
|
||||||
service_manager::mojom::InterfaceProviderPtr remote_interfaces;
|
service_manager::mojom::InterfaceProviderPtr remote_interfaces;
|
||||||
pending_remote_interface_provider_request_ = MakeRequest(&remote_interfaces);
|
pending_remote_interface_provider_request_ = MakeRequest(&remote_interfaces);
|
||||||
remote_interfaces_.reset(new service_manager::InterfaceProvider);
|
remote_interfaces_.reset(new service_manager::InterfaceProvider);
|
||||||
remote_interfaces_->Bind(std::move(remote_interfaces));
|
remote_interfaces_->Bind(std::move(remote_interfaces));
|
||||||
blink_interface_registry_.reset(
|
blink_interface_registry_.reset(
|
||||||
new BlinkInterfaceRegistryImpl(interface_registry_->GetWeakPtr()));
|
new BlinkInterfaceRegistryImpl(registry_.GetWeakPtr()));
|
||||||
|
|
||||||
// Must call after binding our own remote interfaces.
|
// Must call after binding our own remote interfaces.
|
||||||
media_factory_.SetupMojo();
|
media_factory_.SetupMojo();
|
||||||
@@ -1353,8 +1352,14 @@ void RenderFrameImpl::InitializeBlameContext(RenderFrameImpl* parent_frame) {
|
|||||||
void RenderFrameImpl::GetInterface(
|
void RenderFrameImpl::GetInterface(
|
||||||
const std::string& interface_name,
|
const std::string& interface_name,
|
||||||
mojo::ScopedMessagePipeHandle interface_pipe) {
|
mojo::ScopedMessagePipeHandle interface_pipe) {
|
||||||
// TODO(beng): We should be getting this info from the frame factory request.
|
if (registry_.TryBindInterface(interface_name, &interface_pipe))
|
||||||
interface_registry_->BindInterface(interface_name, std::move(interface_pipe));
|
return;
|
||||||
|
|
||||||
|
for (auto& observer : observers_) {
|
||||||
|
observer.OnInterfaceRequestForFrame(interface_name, &interface_pipe);
|
||||||
|
if (!interface_pipe.is_valid())
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderWidget* RenderFrameImpl::GetRenderWidget() {
|
RenderWidget* RenderFrameImpl::GetRenderWidget() {
|
||||||
@@ -2652,8 +2657,10 @@ void RenderFrameImpl::ExecuteJavaScript(const base::string16& javascript) {
|
|||||||
OnJavaScriptExecuteRequest(javascript, 0, false);
|
OnJavaScriptExecuteRequest(javascript, 0, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
service_manager::BinderRegistry* RenderFrameImpl::GetInterfaceRegistry() {
|
void RenderFrameImpl::BindLocalInterface(
|
||||||
return interface_registry_.get();
|
const std::string& interface_name,
|
||||||
|
mojo::ScopedMessagePipeHandle interface_pipe) {
|
||||||
|
GetInterface(interface_name, std::move(interface_pipe));
|
||||||
}
|
}
|
||||||
|
|
||||||
service_manager::InterfaceProvider* RenderFrameImpl::GetRemoteInterfaces() {
|
service_manager::InterfaceProvider* RenderFrameImpl::GetRemoteInterfaces() {
|
||||||
@@ -6289,7 +6296,7 @@ void RenderFrameImpl::InitializeUserMediaClient() {
|
|||||||
this, RenderThreadImpl::current()->GetPeerConnectionDependencyFactory(),
|
this, RenderThreadImpl::current()->GetPeerConnectionDependencyFactory(),
|
||||||
base::MakeUnique<MediaStreamDispatcher>(this),
|
base::MakeUnique<MediaStreamDispatcher>(this),
|
||||||
render_thread->GetWorkerTaskRunner());
|
render_thread->GetWorkerTaskRunner());
|
||||||
GetInterfaceRegistry()->AddInterface(
|
registry_.AddInterface(
|
||||||
base::Bind(&MediaDevicesListenerImpl::Create, GetRoutingID()));
|
base::Bind(&MediaDevicesListenerImpl::Create, GetRoutingID()));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -6682,13 +6689,13 @@ void RenderFrameImpl::RegisterMojoInterfaces() {
|
|||||||
GetAssociatedInterfaceRegistry()->AddInterface(base::Bind(
|
GetAssociatedInterfaceRegistry()->AddInterface(base::Bind(
|
||||||
&RenderFrameImpl::BindFrameBindingsControl, weak_factory_.GetWeakPtr()));
|
&RenderFrameImpl::BindFrameBindingsControl, weak_factory_.GetWeakPtr()));
|
||||||
|
|
||||||
GetInterfaceRegistry()->AddInterface(base::Bind(
|
registry_.AddInterface(base::Bind(&FrameInputHandlerImpl::CreateMojoService,
|
||||||
&FrameInputHandlerImpl::CreateMojoService, weak_factory_.GetWeakPtr()));
|
weak_factory_.GetWeakPtr()));
|
||||||
|
|
||||||
if (!frame_->Parent()) {
|
if (!frame_->Parent()) {
|
||||||
// Only main frame have ImageDownloader service.
|
// Only main frame have ImageDownloader service.
|
||||||
GetInterfaceRegistry()->AddInterface(base::Bind(
|
registry_.AddInterface(base::Bind(&ImageDownloaderImpl::CreateMojoService,
|
||||||
&ImageDownloaderImpl::CreateMojoService, base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
|
||||||
// Host zoom is per-page, so only added on the main frame.
|
// Host zoom is per-page, so only added on the main frame.
|
||||||
GetAssociatedInterfaceRegistry()->AddInterface(base::Bind(
|
GetAssociatedInterfaceRegistry()->AddInterface(base::Bind(
|
||||||
|
@@ -432,7 +432,9 @@ class CONTENT_EXPORT RenderFrameImpl
|
|||||||
void ExecuteJavaScript(const base::string16& javascript) override;
|
void ExecuteJavaScript(const base::string16& javascript) override;
|
||||||
bool IsMainFrame() override;
|
bool IsMainFrame() override;
|
||||||
bool IsHidden() override;
|
bool IsHidden() override;
|
||||||
service_manager::BinderRegistry* GetInterfaceRegistry() override;
|
void BindLocalInterface(
|
||||||
|
const std::string& interface_name,
|
||||||
|
mojo::ScopedMessagePipeHandle interface_pipe) override;
|
||||||
service_manager::InterfaceProvider* GetRemoteInterfaces() override;
|
service_manager::InterfaceProvider* GetRemoteInterfaces() override;
|
||||||
AssociatedInterfaceRegistry* GetAssociatedInterfaceRegistry() override;
|
AssociatedInterfaceRegistry* GetAssociatedInterfaceRegistry() override;
|
||||||
AssociatedInterfaceProvider* GetRemoteAssociatedInterfaces() override;
|
AssociatedInterfaceProvider* GetRemoteAssociatedInterfaces() override;
|
||||||
@@ -1309,7 +1311,7 @@ class CONTENT_EXPORT RenderFrameImpl
|
|||||||
// The PushMessagingClient attached to this frame, lazily initialized.
|
// The PushMessagingClient attached to this frame, lazily initialized.
|
||||||
PushMessagingClient* push_messaging_client_;
|
PushMessagingClient* push_messaging_client_;
|
||||||
|
|
||||||
std::unique_ptr<service_manager::BinderRegistry> interface_registry_;
|
service_manager::BinderRegistry registry_;
|
||||||
std::unique_ptr<service_manager::InterfaceProvider> remote_interfaces_;
|
std::unique_ptr<service_manager::InterfaceProvider> remote_interfaces_;
|
||||||
std::unique_ptr<BlinkInterfaceRegistryImpl> blink_interface_registry_;
|
std::unique_ptr<BlinkInterfaceRegistryImpl> blink_interface_registry_;
|
||||||
service_manager::mojom::InterfaceProviderRequest
|
service_manager::mojom::InterfaceProviderRequest
|
||||||
|
@@ -700,13 +700,10 @@ void BlinkTestRunner::DispatchBeforeInstallPromptEvent(
|
|||||||
const std::vector<std::string>& event_platforms,
|
const std::vector<std::string>& event_platforms,
|
||||||
const base::Callback<void(bool)>& callback) {
|
const base::Callback<void(bool)>& callback) {
|
||||||
app_banner_service_.reset(new test_runner::AppBannerService());
|
app_banner_service_.reset(new test_runner::AppBannerService());
|
||||||
|
|
||||||
service_manager::BinderRegistry* registry =
|
|
||||||
render_view()->GetMainRenderFrame()->GetInterfaceRegistry();
|
|
||||||
blink::mojom::AppBannerControllerRequest request =
|
blink::mojom::AppBannerControllerRequest request =
|
||||||
mojo::MakeRequest(&app_banner_service_->controller());
|
mojo::MakeRequest(&app_banner_service_->controller());
|
||||||
registry->BindInterface(blink::mojom::AppBannerController::Name_,
|
render_view()->GetMainRenderFrame()->BindLocalInterface(
|
||||||
request.PassMessagePipe());
|
blink::mojom::AppBannerController::Name_, request.PassMessagePipe());
|
||||||
app_banner_service_->SendBannerPromptRequest(event_platforms, callback);
|
app_banner_service_->SendBannerPromptRequest(event_platforms, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -81,7 +81,7 @@ ExtensionsRenderFrameObserver::ExtensionsRenderFrameObserver(
|
|||||||
content::RenderFrame* render_frame)
|
content::RenderFrame* render_frame)
|
||||||
: content::RenderFrameObserver(render_frame),
|
: content::RenderFrameObserver(render_frame),
|
||||||
webview_visually_deemphasized_(false) {
|
webview_visually_deemphasized_(false) {
|
||||||
render_frame->GetInterfaceRegistry()->AddInterface(
|
registry_.AddInterface(
|
||||||
base::Bind(&ExtensionsRenderFrameObserver::BindAppWindowRequest,
|
base::Bind(&ExtensionsRenderFrameObserver::BindAppWindowRequest,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
}
|
}
|
||||||
@@ -105,6 +105,12 @@ void ExtensionsRenderFrameObserver::SetVisuallyDeemphasized(bool deemphasized) {
|
|||||||
render_frame()->GetRenderView()->GetWebView()->SetPageOverlayColor(color);
|
render_frame()->GetRenderView()->GetWebView()->SetPageOverlayColor(color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ExtensionsRenderFrameObserver::OnInterfaceRequestForFrame(
|
||||||
|
const std::string& interface_name,
|
||||||
|
mojo::ScopedMessagePipeHandle* interface_pipe) {
|
||||||
|
registry_.TryBindInterface(interface_name, interface_pipe);
|
||||||
|
}
|
||||||
|
|
||||||
void ExtensionsRenderFrameObserver::DetailedConsoleMessageAdded(
|
void ExtensionsRenderFrameObserver::DetailedConsoleMessageAdded(
|
||||||
const base::string16& message,
|
const base::string16& message,
|
||||||
const base::string16& source,
|
const base::string16& source,
|
||||||
|
@@ -11,6 +11,7 @@
|
|||||||
#include "content/public/renderer/render_frame_observer.h"
|
#include "content/public/renderer/render_frame_observer.h"
|
||||||
#include "extensions/common/mojo/app_window.mojom.h"
|
#include "extensions/common/mojo/app_window.mojom.h"
|
||||||
#include "mojo/public/cpp/bindings/binding_set.h"
|
#include "mojo/public/cpp/bindings/binding_set.h"
|
||||||
|
#include "services/service_manager/public/cpp/binder_registry.h"
|
||||||
|
|
||||||
namespace extensions {
|
namespace extensions {
|
||||||
|
|
||||||
@@ -31,6 +32,9 @@ class ExtensionsRenderFrameObserver : public content::RenderFrameObserver,
|
|||||||
void SetVisuallyDeemphasized(bool deemphasized) override;
|
void SetVisuallyDeemphasized(bool deemphasized) override;
|
||||||
|
|
||||||
// RenderFrameObserver implementation.
|
// RenderFrameObserver implementation.
|
||||||
|
void OnInterfaceRequestForFrame(
|
||||||
|
const std::string& interface_name,
|
||||||
|
mojo::ScopedMessagePipeHandle* interface_pipe) override;
|
||||||
void DetailedConsoleMessageAdded(const base::string16& message,
|
void DetailedConsoleMessageAdded(const base::string16& message,
|
||||||
const base::string16& source,
|
const base::string16& source,
|
||||||
const base::string16& stack_trace,
|
const base::string16& stack_trace,
|
||||||
@@ -43,6 +47,8 @@ class ExtensionsRenderFrameObserver : public content::RenderFrameObserver,
|
|||||||
|
|
||||||
mojo::BindingSet<mojom::AppWindow> bindings_;
|
mojo::BindingSet<mojom::AppWindow> bindings_;
|
||||||
|
|
||||||
|
service_manager::BinderRegistry registry_;
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(ExtensionsRenderFrameObserver);
|
DISALLOW_COPY_AND_ASSIGN(ExtensionsRenderFrameObserver);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -16,7 +16,7 @@ HeadlessRenderFrameControllerImpl::HeadlessRenderFrameControllerImpl(
|
|||||||
: content::RenderFrameObserver(render_frame),
|
: content::RenderFrameObserver(render_frame),
|
||||||
render_frame_(render_frame),
|
render_frame_(render_frame),
|
||||||
weak_ptr_factory_(this) {
|
weak_ptr_factory_(this) {
|
||||||
render_frame->GetInterfaceRegistry()->AddInterface(base::Bind(
|
registry_.AddInterface(base::Bind(
|
||||||
&HeadlessRenderFrameControllerImpl::OnRenderFrameControllerRequest,
|
&HeadlessRenderFrameControllerImpl::OnRenderFrameControllerRequest,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
}
|
}
|
||||||
@@ -68,6 +68,12 @@ void HeadlessRenderFrameControllerImpl::SendMessageToTabSocket(
|
|||||||
find_it->second.OnMessageFromEmbedder(message);
|
find_it->second.OnMessageFromEmbedder(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HeadlessRenderFrameControllerImpl::OnInterfaceRequestForFrame(
|
||||||
|
const std::string& interface_name,
|
||||||
|
mojo::ScopedMessagePipeHandle* interface_pipe) {
|
||||||
|
registry_.TryBindInterface(interface_name, interface_pipe);
|
||||||
|
}
|
||||||
|
|
||||||
void HeadlessRenderFrameControllerImpl::DidCreateScriptContext(
|
void HeadlessRenderFrameControllerImpl::DidCreateScriptContext(
|
||||||
v8::Local<v8::Context> context,
|
v8::Local<v8::Context> context,
|
||||||
int world_id) {
|
int world_id) {
|
||||||
|
@@ -11,6 +11,7 @@
|
|||||||
#include "headless/lib/renderer/headless_tab_socket_bindings.h"
|
#include "headless/lib/renderer/headless_tab_socket_bindings.h"
|
||||||
#include "headless/lib/tab_socket.mojom.h"
|
#include "headless/lib/tab_socket.mojom.h"
|
||||||
#include "mojo/public/cpp/bindings/binding_set.h"
|
#include "mojo/public/cpp/bindings/binding_set.h"
|
||||||
|
#include "services/service_manager/public/cpp/binder_registry.h"
|
||||||
|
|
||||||
namespace headless {
|
namespace headless {
|
||||||
|
|
||||||
@@ -33,6 +34,9 @@ class HeadlessRenderFrameControllerImpl : public HeadlessRenderFrameController,
|
|||||||
int32_t world_id) override;
|
int32_t world_id) override;
|
||||||
|
|
||||||
// content::RenderFrameObserver implementation:
|
// content::RenderFrameObserver implementation:
|
||||||
|
void OnInterfaceRequestForFrame(
|
||||||
|
const std::string& interface_name,
|
||||||
|
mojo::ScopedMessagePipeHandle* interface_pipe) override;
|
||||||
void DidCreateScriptContext(v8::Local<v8::Context> context,
|
void DidCreateScriptContext(v8::Local<v8::Context> context,
|
||||||
int world_id) override;
|
int world_id) override;
|
||||||
|
|
||||||
@@ -51,6 +55,7 @@ class HeadlessRenderFrameControllerImpl : public HeadlessRenderFrameController,
|
|||||||
headless::TabSocketPtr tab_socket_ptr_;
|
headless::TabSocketPtr tab_socket_ptr_;
|
||||||
InstallMainWorldTabSocketCallback
|
InstallMainWorldTabSocketCallback
|
||||||
pending_install_main_world_tab_socket_callback_;
|
pending_install_main_world_tab_socket_callback_;
|
||||||
|
service_manager::BinderRegistry registry_;
|
||||||
base::WeakPtrFactory<HeadlessRenderFrameControllerImpl> weak_ptr_factory_;
|
base::WeakPtrFactory<HeadlessRenderFrameControllerImpl> weak_ptr_factory_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user