Commit cf1efee2 authored by catmullings's avatar catmullings Committed by Commit bot

Convert SetVisuallyDeemphasized IPC to mojo

Convert SetVisuallyDeemphasized to a mojo message while moving its
definition and declaration out of chrome/ code into extensions/ code.

BUG=697613

Review-Url: https://codereview.chromium.org/2724933002
Cr-Commit-Position: refs/heads/master@{#455788}
parent 31b966ba
...@@ -1184,6 +1184,7 @@ split_static_library("ui") { ...@@ -1184,6 +1184,7 @@ split_static_library("ui") {
"//components/proximity_auth/webui", "//components/proximity_auth/webui",
"//components/web_modal", "//components/web_modal",
"//device/bluetooth", "//device/bluetooth",
"//extensions/common:mojo",
"//mash/public/interfaces", "//mash/public/interfaces",
"//ui/vector_icons", "//ui/vector_icons",
] ]
......
...@@ -34,11 +34,14 @@ ...@@ -34,11 +34,14 @@
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
#include "content/public/browser/host_zoom_map.h" #include "content/public/browser/host_zoom_map.h"
#include "content/public/browser/notification_service.h" #include "content/public/browser/notification_service.h"
#include "content/public/browser/render_view_host.h" #include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_delegate.h" #include "content/public/browser/web_contents_delegate.h"
#include "extensions/common/constants.h" #include "extensions/common/constants.h"
#include "extensions/common/mojo/app_window.mojom.h"
#include "printing/features/features.h" #include "printing/features/features.h"
#include "services/service_manager/public/cpp/interface_provider.h"
#if defined(USE_ASH) #if defined(USE_ASH)
#include "ash/common/shelf/shelf_constants.h" // nogncheck #include "ash/common/shelf/shelf_constants.h" // nogncheck
...@@ -305,10 +308,11 @@ void ChromeAppDelegate::SetWebContentsBlocked( ...@@ -305,10 +308,11 @@ void ChromeAppDelegate::SetWebContentsBlocked(
if (!blocked) if (!blocked)
web_contents->Focus(); web_contents->Focus();
// RenderViewHost may be NULL during shutdown. // RenderViewHost may be NULL during shutdown.
content::RenderViewHost* host = web_contents->GetRenderViewHost(); content::RenderFrameHost* host = web_contents->GetMainFrame();
if (host) { if (host) {
host->Send(new ChromeViewMsg_SetVisuallyDeemphasized(host->GetRoutingID(), extensions::mojom::AppWindowPtr app_window;
blocked)); host->GetProcess()->GetRemoteInterfaces()->GetInterface(&app_window);
app_window->SetVisuallyDeemphasized(blocked);
} }
} }
......
...@@ -36,11 +36,6 @@ IPC_ENUM_TRAITS_MAX_VALUE(extensions::webstore_install::Result, ...@@ -36,11 +36,6 @@ IPC_ENUM_TRAITS_MAX_VALUE(extensions::webstore_install::Result,
// Messages sent from the browser to the renderer. // Messages sent from the browser to the renderer.
// Toggles visual muting of the render view area. This is on when a constrained
// window is showing.
IPC_MESSAGE_ROUTED1(ChromeViewMsg_SetVisuallyDeemphasized,
bool /* deemphazied */)
// Sent to the renderer if install stage updates were requested for an inline // Sent to the renderer if install stage updates were requested for an inline
// install. // install.
IPC_MESSAGE_ROUTED1(ExtensionMsg_InlineInstallStageChanged, IPC_MESSAGE_ROUTED1(ExtensionMsg_InlineInstallStageChanged,
......
...@@ -46,8 +46,7 @@ ChromeRenderViewObserver::ChromeRenderViewObserver( ...@@ -46,8 +46,7 @@ ChromeRenderViewObserver::ChromeRenderViewObserver(
content::RenderView* render_view, content::RenderView* render_view,
web_cache::WebCacheImpl* web_cache_impl) web_cache::WebCacheImpl* web_cache_impl)
: content::RenderViewObserver(render_view), : content::RenderViewObserver(render_view),
web_cache_impl_(web_cache_impl), web_cache_impl_(web_cache_impl) {}
webview_visually_deemphasized_(false) {}
ChromeRenderViewObserver::~ChromeRenderViewObserver() { ChromeRenderViewObserver::~ChromeRenderViewObserver() {
} }
...@@ -58,10 +57,6 @@ bool ChromeRenderViewObserver::OnMessageReceived(const IPC::Message& message) { ...@@ -58,10 +57,6 @@ bool ChromeRenderViewObserver::OnMessageReceived(const IPC::Message& message) {
#if !defined(OS_ANDROID) #if !defined(OS_ANDROID)
IPC_MESSAGE_HANDLER(ChromeViewMsg_WebUIJavaScript, OnWebUIJavaScript) IPC_MESSAGE_HANDLER(ChromeViewMsg_WebUIJavaScript, OnWebUIJavaScript)
#endif #endif
#if BUILDFLAG(ENABLE_EXTENSIONS)
IPC_MESSAGE_HANDLER(ChromeViewMsg_SetVisuallyDeemphasized,
OnSetVisuallyDeemphasized)
#endif
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
IPC_MESSAGE_HANDLER(ChromeViewMsg_UpdateBrowserControlsState, IPC_MESSAGE_HANDLER(ChromeViewMsg_UpdateBrowserControlsState,
OnUpdateBrowserControlsState) OnUpdateBrowserControlsState)
...@@ -148,23 +143,6 @@ void ChromeRenderViewObserver::Navigate(const GURL& url) { ...@@ -148,23 +143,6 @@ void ChromeRenderViewObserver::Navigate(const GURL& url) {
web_cache_impl_->ExecutePendingClearCache(); web_cache_impl_->ExecutePendingClearCache();
} }
#if BUILDFLAG(ENABLE_EXTENSIONS)
void ChromeRenderViewObserver::OnSetVisuallyDeemphasized(bool deemphasized) {
if (webview_visually_deemphasized_ == deemphasized)
return;
webview_visually_deemphasized_ = deemphasized;
if (deemphasized) {
// 70% opaque grey.
SkColor greyish = SkColorSetARGB(178, 0, 0, 0);
render_view()->GetWebView()->setPageOverlayColor(greyish);
} else {
render_view()->GetWebView()->setPageOverlayColor(SK_ColorTRANSPARENT);
}
}
#endif
void ChromeRenderViewObserver::DidCommitProvisionalLoad( void ChromeRenderViewObserver::DidCommitProvisionalLoad(
blink::WebLocalFrame* frame, blink::WebLocalFrame* frame,
bool is_new_navigation) { bool is_new_navigation) {
......
...@@ -43,9 +43,6 @@ class ChromeRenderViewObserver : public content::RenderViewObserver { ...@@ -43,9 +43,6 @@ class ChromeRenderViewObserver : public content::RenderViewObserver {
#if !defined(OS_ANDROID) #if !defined(OS_ANDROID)
void OnWebUIJavaScript(const base::string16& javascript); void OnWebUIJavaScript(const base::string16& javascript);
#endif #endif
#if BUILDFLAG(ENABLE_EXTENSIONS)
void OnSetVisuallyDeemphasized(bool deemphasized);
#endif
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
void OnUpdateBrowserControlsState(content::BrowserControlsState constraints, void OnUpdateBrowserControlsState(content::BrowserControlsState constraints,
content::BrowserControlsState current, content::BrowserControlsState current,
...@@ -63,9 +60,6 @@ class ChromeRenderViewObserver : public content::RenderViewObserver { ...@@ -63,9 +60,6 @@ class ChromeRenderViewObserver : public content::RenderViewObserver {
// Owned by ChromeContentRendererClient and outlive us. // Owned by ChromeContentRendererClient and outlive us.
web_cache::WebCacheImpl* web_cache_impl_; web_cache::WebCacheImpl* web_cache_impl_;
// true if webview is overlayed with grey color.
bool webview_visually_deemphasized_;
DISALLOW_COPY_AND_ASSIGN(ChromeRenderViewObserver); DISALLOW_COPY_AND_ASSIGN(ChromeRenderViewObserver);
}; };
......
...@@ -19,6 +19,7 @@ source_set("common_constants") { ...@@ -19,6 +19,7 @@ source_set("common_constants") {
if (enable_extensions) { if (enable_extensions) {
mojom("mojo") { mojom("mojo") {
sources = [ sources = [
"mojo/app_window.mojom",
"mojo/keep_alive.mojom", "mojo/keep_alive.mojom",
] ]
if (proprietary_codecs && enable_wifi_display) { if (proprietary_codecs && enable_wifi_display) {
......
// Copyright 2017 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.
module extensions.mojom;
interface AppWindow {
SetVisuallyDeemphasized(bool deemphasized);
};
...@@ -20,5 +20,7 @@ include_rules = [ ...@@ -20,5 +20,7 @@ include_rules = [
"+v8/include", "+v8/include",
"+storage/common/fileapi", "+storage/common/fileapi",
"+services/service_manager/public/cpp",
] ]
...@@ -9,9 +9,12 @@ ...@@ -9,9 +9,12 @@
#include "base/strings/string_split.h" #include "base/strings/string_split.h"
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "content/public/renderer/render_frame.h" #include "content/public/renderer/render_frame.h"
#include "content/public/renderer/render_view.h"
#include "extensions/common/extension_messages.h" #include "extensions/common/extension_messages.h"
#include "extensions/common/stack_frame.h" #include "extensions/common/stack_frame.h"
#include "services/service_manager/public/cpp/interface_registry.h"
#include "third_party/WebKit/public/web/WebLocalFrame.h" #include "third_party/WebKit/public/web/WebLocalFrame.h"
#include "third_party/WebKit/public/web/WebView.h"
namespace extensions { namespace extensions {
...@@ -76,12 +79,32 @@ StackTrace GetStackTraceFromMessage(base::string16* message, ...@@ -76,12 +79,32 @@ StackTrace GetStackTraceFromMessage(base::string16* message,
ExtensionsRenderFrameObserver::ExtensionsRenderFrameObserver( ExtensionsRenderFrameObserver::ExtensionsRenderFrameObserver(
content::RenderFrame* render_frame) content::RenderFrame* render_frame)
: content::RenderFrameObserver(render_frame) { : content::RenderFrameObserver(render_frame),
webview_visually_deemphasized_(false) {
render_frame->GetInterfaceRegistry()->AddInterface(
base::Bind(&ExtensionsRenderFrameObserver::BindAppWindowRequest,
base::Unretained(this)));
} }
ExtensionsRenderFrameObserver::~ExtensionsRenderFrameObserver() { ExtensionsRenderFrameObserver::~ExtensionsRenderFrameObserver() {
} }
void ExtensionsRenderFrameObserver::BindAppWindowRequest(
mojom::AppWindowRequest request) {
bindings_.AddBinding(this, std::move(request));
}
void ExtensionsRenderFrameObserver::SetVisuallyDeemphasized(bool deemphasized) {
if (webview_visually_deemphasized_ == deemphasized)
return;
webview_visually_deemphasized_ = deemphasized;
SkColor color =
deemphasized ? SkColorSetARGB(178, 0, 0, 0) : SK_ColorTRANSPARENT;
render_frame()->GetRenderView()->GetWebView()->setPageOverlayColor(color);
}
void ExtensionsRenderFrameObserver::DetailedConsoleMessageAdded( void ExtensionsRenderFrameObserver::DetailedConsoleMessageAdded(
const base::string16& message, const base::string16& message,
const base::string16& source, const base::string16& source,
......
...@@ -9,19 +9,27 @@ ...@@ -9,19 +9,27 @@
#include "base/macros.h" #include "base/macros.h"
#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 "mojo/public/cpp/bindings/binding_set.h"
namespace extensions { namespace extensions {
// This class holds the extensions specific parts of RenderFrame, and has the // This class holds the extensions specific parts of RenderFrame, and has the
// same lifetime. // same lifetime.
class ExtensionsRenderFrameObserver class ExtensionsRenderFrameObserver : public content::RenderFrameObserver,
: public content::RenderFrameObserver { public mojom::AppWindow {
public: public:
explicit ExtensionsRenderFrameObserver( explicit ExtensionsRenderFrameObserver(
content::RenderFrame* render_frame); content::RenderFrame* render_frame);
~ExtensionsRenderFrameObserver() override; ~ExtensionsRenderFrameObserver() override;
private: private:
void BindAppWindowRequest(mojom::AppWindowRequest request);
// Toggles visual muting of the render view area. This is on when a
// constrained window is showing.
void SetVisuallyDeemphasized(bool deemphasized) override;
// RenderFrameObserver implementation. // RenderFrameObserver implementation.
void DetailedConsoleMessageAdded(const base::string16& message, void DetailedConsoleMessageAdded(const base::string16& message,
const base::string16& source, const base::string16& source,
...@@ -30,6 +38,11 @@ class ExtensionsRenderFrameObserver ...@@ -30,6 +38,11 @@ class ExtensionsRenderFrameObserver
int32_t severity_level) override; int32_t severity_level) override;
void OnDestruct() override; void OnDestruct() override;
// true if webview is overlayed with grey color.
bool webview_visually_deemphasized_;
mojo::BindingSet<mojom::AppWindow> bindings_;
DISALLOW_COPY_AND_ASSIGN(ExtensionsRenderFrameObserver); DISALLOW_COPY_AND_ASSIGN(ExtensionsRenderFrameObserver);
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment