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") {
"//components/proximity_auth/webui",
"//components/web_modal",
"//device/bluetooth",
"//extensions/common:mojo",
"//mash/public/interfaces",
"//ui/vector_icons",
]
......
......@@ -34,11 +34,14 @@
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/host_zoom_map.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_delegate.h"
#include "extensions/common/constants.h"
#include "extensions/common/mojo/app_window.mojom.h"
#include "printing/features/features.h"
#include "services/service_manager/public/cpp/interface_provider.h"
#if defined(USE_ASH)
#include "ash/common/shelf/shelf_constants.h" // nogncheck
......@@ -305,10 +308,11 @@ void ChromeAppDelegate::SetWebContentsBlocked(
if (!blocked)
web_contents->Focus();
// RenderViewHost may be NULL during shutdown.
content::RenderViewHost* host = web_contents->GetRenderViewHost();
content::RenderFrameHost* host = web_contents->GetMainFrame();
if (host) {
host->Send(new ChromeViewMsg_SetVisuallyDeemphasized(host->GetRoutingID(),
blocked));
extensions::mojom::AppWindowPtr app_window;
host->GetProcess()->GetRemoteInterfaces()->GetInterface(&app_window);
app_window->SetVisuallyDeemphasized(blocked);
}
}
......
......@@ -36,11 +36,6 @@ IPC_ENUM_TRAITS_MAX_VALUE(extensions::webstore_install::Result,
// 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
// install.
IPC_MESSAGE_ROUTED1(ExtensionMsg_InlineInstallStageChanged,
......
......@@ -46,8 +46,7 @@ ChromeRenderViewObserver::ChromeRenderViewObserver(
content::RenderView* render_view,
web_cache::WebCacheImpl* web_cache_impl)
: content::RenderViewObserver(render_view),
web_cache_impl_(web_cache_impl),
webview_visually_deemphasized_(false) {}
web_cache_impl_(web_cache_impl) {}
ChromeRenderViewObserver::~ChromeRenderViewObserver() {
}
......@@ -58,10 +57,6 @@ bool ChromeRenderViewObserver::OnMessageReceived(const IPC::Message& message) {
#if !defined(OS_ANDROID)
IPC_MESSAGE_HANDLER(ChromeViewMsg_WebUIJavaScript, OnWebUIJavaScript)
#endif
#if BUILDFLAG(ENABLE_EXTENSIONS)
IPC_MESSAGE_HANDLER(ChromeViewMsg_SetVisuallyDeemphasized,
OnSetVisuallyDeemphasized)
#endif
#if defined(OS_ANDROID)
IPC_MESSAGE_HANDLER(ChromeViewMsg_UpdateBrowserControlsState,
OnUpdateBrowserControlsState)
......@@ -148,23 +143,6 @@ void ChromeRenderViewObserver::Navigate(const GURL& url) {
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(
blink::WebLocalFrame* frame,
bool is_new_navigation) {
......
......@@ -43,9 +43,6 @@ class ChromeRenderViewObserver : public content::RenderViewObserver {
#if !defined(OS_ANDROID)
void OnWebUIJavaScript(const base::string16& javascript);
#endif
#if BUILDFLAG(ENABLE_EXTENSIONS)
void OnSetVisuallyDeemphasized(bool deemphasized);
#endif
#if defined(OS_ANDROID)
void OnUpdateBrowserControlsState(content::BrowserControlsState constraints,
content::BrowserControlsState current,
......@@ -63,9 +60,6 @@ class ChromeRenderViewObserver : public content::RenderViewObserver {
// Owned by ChromeContentRendererClient and outlive us.
web_cache::WebCacheImpl* web_cache_impl_;
// true if webview is overlayed with grey color.
bool webview_visually_deemphasized_;
DISALLOW_COPY_AND_ASSIGN(ChromeRenderViewObserver);
};
......
......@@ -19,6 +19,7 @@ source_set("common_constants") {
if (enable_extensions) {
mojom("mojo") {
sources = [
"mojo/app_window.mojom",
"mojo/keep_alive.mojom",
]
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 = [
"+v8/include",
"+storage/common/fileapi",
"+services/service_manager/public/cpp",
]
......@@ -9,9 +9,12 @@
#include "base/strings/string_split.h"
#include "base/strings/utf_string_conversions.h"
#include "content/public/renderer/render_frame.h"
#include "content/public/renderer/render_view.h"
#include "extensions/common/extension_messages.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/WebView.h"
namespace extensions {
......@@ -76,12 +79,32 @@ StackTrace GetStackTraceFromMessage(base::string16* message,
ExtensionsRenderFrameObserver::ExtensionsRenderFrameObserver(
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() {
}
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(
const base::string16& message,
const base::string16& source,
......
......@@ -9,19 +9,27 @@
#include "base/macros.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 {
// This class holds the extensions specific parts of RenderFrame, and has the
// same lifetime.
class ExtensionsRenderFrameObserver
: public content::RenderFrameObserver {
class ExtensionsRenderFrameObserver : public content::RenderFrameObserver,
public mojom::AppWindow {
public:
explicit ExtensionsRenderFrameObserver(
content::RenderFrame* render_frame);
~ExtensionsRenderFrameObserver() override;
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.
void DetailedConsoleMessageAdded(const base::string16& message,
const base::string16& source,
......@@ -30,6 +38,11 @@ class ExtensionsRenderFrameObserver
int32_t severity_level) 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);
};
......
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