Index: extensions/renderer/extensions_render_frame_observer.cc |
diff --git a/extensions/renderer/extensions_render_frame_observer.cc b/extensions/renderer/extensions_render_frame_observer.cc |
index be6dbccd2f1e12e36e90bbc7021516595a1dbbec..0d89b4a98e1c56b66209646d627d08bf8687ae0c 100644 |
--- a/extensions/renderer/extensions_render_frame_observer.cc |
+++ b/extensions/renderer/extensions_render_frame_observer.cc |
@@ -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 { |
@@ -74,14 +77,40 @@ StackTrace GetStackTraceFromMessage(base::string16* message, |
} // namespace |
+void ExtensionsRenderFrameObserver::Create( |
+ mojom::FrameObserverRequest request) { |
+ bindings_.AddBinding(this, std::move(request)); |
+} |
+ |
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::Create, base::Unretained(this))); |
} |
ExtensionsRenderFrameObserver::~ExtensionsRenderFrameObserver() { |
} |
+#if BUILDFLAG(ENABLE_EXTENSIONS) |
+void ExtensionsRenderFrameObserver::SetVisuallyDeemphasized(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_frame()->GetRenderView()->GetWebView()->setPageOverlayColor(greyish); |
+ } else { |
+ render_frame()->GetRenderView()->GetWebView()->setPageOverlayColor( |
+ SK_ColorTRANSPARENT); |
+ } |
+} |
+#endif |
+ |
void ExtensionsRenderFrameObserver::DetailedConsoleMessageAdded( |
const base::string16& message, |
const base::string16& source, |