Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1058)

Side by Side Diff: chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.cc

Issue 596003002: Allow declarative webrequest and webrequest in extensions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 5
6 #include "chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.h" 6 #include "chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.h"
7 7
8 #include "chrome/browser/extensions/chrome_extension_web_contents_observer.h" 8 #include "chrome/browser/extensions/chrome_extension_web_contents_observer.h"
9 #include "chrome/browser/favicon/favicon_tab_helper.h" 9 #include "chrome/browser/favicon/favicon_tab_helper.h"
10 #include "chrome/browser/renderer_context_menu/render_view_context_menu.h" 10 #include "chrome/browser/renderer_context_menu/render_view_context_menu.h"
11 #include "chrome/browser/ui/pdf/chrome_pdf_web_contents_helper_client.h" 11 #include "chrome/browser/ui/pdf/chrome_pdf_web_contents_helper_client.h"
12 #include "chrome/browser/ui/zoom/zoom_controller.h" 12 #include "chrome/browser/ui/zoom/zoom_controller.h"
13 #include "chrome/common/chrome_version_info.h" 13 #include "chrome/common/chrome_version_info.h"
14 #include "components/pdf/browser/pdf_web_contents_helper.h" 14 #include "components/pdf/browser/pdf_web_contents_helper.h"
15 #include "components/renderer_context_menu/context_menu_delegate.h" 15 #include "components/renderer_context_menu/context_menu_delegate.h"
16 #include "content/public/common/page_zoom.h" 16 #include "content/public/common/page_zoom.h"
17 #include "extensions/browser/api/web_request/web_request_api.h" 17 #include "extensions/browser/api/web_request/web_request_api.h"
18 #include "extensions/browser/guest_view/web_view/web_view_constants.h" 18 #include "extensions/browser/guest_view/web_view/web_view_constants.h"
19 19
20 #if defined(ENABLE_PRINTING) 20 #if defined(ENABLE_PRINTING)
21 #if defined(ENABLE_FULL_PRINTING) 21 #if defined(ENABLE_FULL_PRINTING)
22 #include "chrome/browser/printing/print_preview_message_handler.h" 22 #include "chrome/browser/printing/print_preview_message_handler.h"
23 #include "chrome/browser/printing/print_view_manager.h" 23 #include "chrome/browser/printing/print_view_manager.h"
24 #else 24 #else
25 #include "chrome/browser/printing/print_view_manager_basic.h" 25 #include "chrome/browser/printing/print_view_manager_basic.h"
26 #endif // defined(ENABLE_FULL_PRINTING) 26 #endif // defined(ENABLE_FULL_PRINTING)
27 #endif // defined(ENABLE_PRINTING) 27 #endif // defined(ENABLE_PRINTING)
28 28
29 void RemoveWebViewEventListenersOnIOThread(
30 void* profile,
31 const std::string& extension_id,
32 int embedder_process_id,
33 int view_instance_id) {
34 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
35 ExtensionWebRequestEventRouter::GetInstance()->RemoveWebViewEventListeners(
36 profile,
37 extension_id,
38 embedder_process_id,
39 view_instance_id);
40 }
41
42 ChromeWebViewGuestDelegate::ChromeWebViewGuestDelegate( 29 ChromeWebViewGuestDelegate::ChromeWebViewGuestDelegate(
43 extensions::WebViewGuest* web_view_guest) 30 extensions::WebViewGuest* web_view_guest)
44 : pending_context_menu_request_id_(0), 31 : pending_context_menu_request_id_(0),
45 chromevox_injected_(false), 32 chromevox_injected_(false),
46 current_zoom_factor_(1.0), 33 current_zoom_factor_(1.0),
47 web_view_guest_(web_view_guest) { 34 web_view_guest_(web_view_guest) {
48 } 35 }
49 36
50 ChromeWebViewGuestDelegate::~ChromeWebViewGuestDelegate() { 37 ChromeWebViewGuestDelegate::~ChromeWebViewGuestDelegate() {
51 } 38 }
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 #else 84 #else
98 printing::PrintViewManagerBasic::CreateForWebContents(contents); 85 printing::PrintViewManagerBasic::CreateForWebContents(contents);
99 #endif // defined(ENABLE_FULL_PRINTING) 86 #endif // defined(ENABLE_FULL_PRINTING)
100 #endif // defined(ENABLE_PRINTING) 87 #endif // defined(ENABLE_PRINTING)
101 pdf::PDFWebContentsHelper::CreateForWebContentsWithClient( 88 pdf::PDFWebContentsHelper::CreateForWebContentsWithClient(
102 contents, 89 contents,
103 scoped_ptr<pdf::PDFWebContentsHelperClient>( 90 scoped_ptr<pdf::PDFWebContentsHelperClient>(
104 new ChromePDFWebContentsHelperClient())); 91 new ChromePDFWebContentsHelperClient()));
105 } 92 }
106 93
107 void ChromeWebViewGuestDelegate::OnEmbedderDestroyed() {
108 // TODO(fsamuel): WebRequest event listeners for <webview> should survive
109 // reparenting of a <webview> within a single embedder. Right now, we keep
110 // around the browser state for the listener for the lifetime of the embedder.
111 // Ideally, the lifetime of the listeners should match the lifetime of the
112 // <webview> DOM node. Once http://crbug.com/156219 is resolved we can move
113 // the call to RemoveWebViewEventListenersOnIOThread back to
114 // WebViewGuest::WebContentsDestroyed.
115 content::BrowserThread::PostTask(
116 content::BrowserThread::IO,
117 FROM_HERE,
118 base::Bind(
119 &RemoveWebViewEventListenersOnIOThread,
120 web_view_guest()->browser_context(),
121 web_view_guest()->embedder_extension_id(),
122 web_view_guest()->embedder_render_process_id(),
123 web_view_guest()->view_instance_id()));
124 }
125
126 void ChromeWebViewGuestDelegate::OnDidAttachToEmbedder() { 94 void ChromeWebViewGuestDelegate::OnDidAttachToEmbedder() {
127 // TODO(fsamuel): This code should be implemented in GuestViewBase once the 95 // TODO(fsamuel): This code should be implemented in GuestViewBase once the
128 // ZoomController moves to the extensions module. 96 // ZoomController moves to the extensions module.
129 ZoomController* zoom_controller = ZoomController::FromWebContents( 97 ZoomController* zoom_controller = ZoomController::FromWebContents(
130 web_view_guest()->embedder_web_contents()); 98 web_view_guest()->embedder_web_contents());
131 if (!zoom_controller) 99 if (!zoom_controller)
132 return; 100 return;
133 // Listen to the embedder's zoom changes. 101 // Listen to the embedder's zoom changes.
134 zoom_controller->AddObserver(this); 102 zoom_controller->AddObserver(this);
135 // Set the guest's initial zoom level to be equal to the embedder's. 103 // Set the guest's initial zoom level to be equal to the embedder's.
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 chromevox_injected_ = false; 219 chromevox_injected_ = false;
252 } 220 }
253 } 221 }
254 #endif 222 #endif
255 223
256 void ChromeWebViewGuestDelegate::OnZoomChanged( 224 void ChromeWebViewGuestDelegate::OnZoomChanged(
257 const ZoomController::ZoomChangedEventData& data) { 225 const ZoomController::ZoomChangedEventData& data) {
258 ZoomController::FromWebContents(guest_web_contents())-> 226 ZoomController::FromWebContents(guest_web_contents())->
259 SetZoomLevel(data.new_zoom_level); 227 SetZoomLevel(data.new_zoom_level);
260 } 228 }
OLDNEW
« no previous file with comments | « chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.h ('k') | chrome/chrome_renderer.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698