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

Side by Side Diff: chrome/browser/ui/panels/panel_host.cc

Issue 1169223002: [Extensions] Clean up the handling of ExtensionHostMsg_Request (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Latest master Created 5 years, 6 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "chrome/browser/ui/panels/panel_host.h" 5 #include "chrome/browser/ui/panels/panel_host.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "chrome/browser/chrome_notification_types.h" 10 #include "chrome/browser/chrome_notification_types.h"
(...skipping 22 matching lines...) Expand all
33 #include "ipc/ipc_message.h" 33 #include "ipc/ipc_message.h"
34 #include "ipc/ipc_message_macros.h" 34 #include "ipc/ipc_message_macros.h"
35 #include "ui/gfx/geometry/rect.h" 35 #include "ui/gfx/geometry/rect.h"
36 #include "ui/gfx/image/image.h" 36 #include "ui/gfx/image/image.h"
37 37
38 using base::UserMetricsAction; 38 using base::UserMetricsAction;
39 39
40 PanelHost::PanelHost(Panel* panel, Profile* profile) 40 PanelHost::PanelHost(Panel* panel, Profile* profile)
41 : panel_(panel), 41 : panel_(panel),
42 profile_(profile), 42 profile_(profile),
43 extension_function_dispatcher_(profile, this),
44 weak_factory_(this) { 43 weak_factory_(this) {
45 } 44 }
46 45
47 PanelHost::~PanelHost() { 46 PanelHost::~PanelHost() {
48 } 47 }
49 48
50 void PanelHost::Init(const GURL& url) { 49 void PanelHost::Init(const GURL& url) {
51 if (url.is_empty()) 50 if (url.is_empty())
52 return; 51 return;
53 52
(...skipping 10 matching lines...) Expand all
64 // Needed to give the web contents a Tab ID. Extension APIs 63 // Needed to give the web contents a Tab ID. Extension APIs
65 // expect web contents to have a Tab ID. 64 // expect web contents to have a Tab ID.
66 SessionTabHelper::CreateForWebContents(web_contents_.get()); 65 SessionTabHelper::CreateForWebContents(web_contents_.get());
67 SessionTabHelper::FromWebContents(web_contents_.get())->SetWindowID( 66 SessionTabHelper::FromWebContents(web_contents_.get())->SetWindowID(
68 panel_->session_id()); 67 panel_->session_id());
69 68
70 favicon::CreateContentFaviconDriverForWebContents(web_contents_.get()); 69 favicon::CreateContentFaviconDriverForWebContents(web_contents_.get());
71 PrefsTabHelper::CreateForWebContents(web_contents_.get()); 70 PrefsTabHelper::CreateForWebContents(web_contents_.get());
72 extensions::ChromeExtensionWebContentsObserver::CreateForWebContents( 71 extensions::ChromeExtensionWebContentsObserver::CreateForWebContents(
73 web_contents_.get()); 72 web_contents_.get());
73 extensions::ExtensionWebContentsObserver::GetForWebContents(
74 web_contents_.get())->dispatcher()->set_delegate(this);
74 75
75 web_contents_->GetController().LoadURL( 76 web_contents_->GetController().LoadURL(
76 url, content::Referrer(), ui::PAGE_TRANSITION_LINK, std::string()); 77 url, content::Referrer(), ui::PAGE_TRANSITION_LINK, std::string());
77 } 78 }
78 79
79 void PanelHost::DestroyWebContents() { 80 void PanelHost::DestroyWebContents() {
80 // Cannot do a web_contents_.reset() because web_contents_.get() will 81 // Cannot do a web_contents_.reset() because web_contents_.get() will
81 // still return the pointer when we CHECK in WebContentsDestroyed (or if 82 // still return the pointer when we CHECK in WebContentsDestroyed (or if
82 // we get called back in the middle of web contents destruction, which 83 // we get called back in the middle of web contents destruction, which
83 // WebView might do when it detects the web contents is destroyed). 84 // WebView might do when it detects the web contents is destroyed).
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 // to cleanly unwind.) 219 // to cleanly unwind.)
219 base::MessageLoop::current()->PostTask( 220 base::MessageLoop::current()->PostTask(
220 FROM_HERE, 221 FROM_HERE,
221 base::Bind(&PanelHost::ClosePanel, weak_factory_.GetWeakPtr())); 222 base::Bind(&PanelHost::ClosePanel, weak_factory_.GetWeakPtr()));
222 } 223 }
223 224
224 void PanelHost::ClosePanel() { 225 void PanelHost::ClosePanel() {
225 panel_->Close(); 226 panel_->Close();
226 } 227 }
227 228
228 bool PanelHost::OnMessageReceived(const IPC::Message& message) {
229 bool handled = true;
230 IPC_BEGIN_MESSAGE_MAP(PanelHost, message)
231 IPC_MESSAGE_HANDLER(ExtensionHostMsg_Request, OnRequest)
232 IPC_MESSAGE_UNHANDLED(handled = false)
233 IPC_END_MESSAGE_MAP()
234 return handled;
235 }
236
237 void PanelHost::OnRequest(const ExtensionHostMsg_Request_Params& params) {
238 if (!web_contents_.get())
239 return;
240
241 extension_function_dispatcher_.Dispatch(params,
242 web_contents_->GetRenderViewHost());
243 }
244
245 extensions::WindowController* PanelHost::GetExtensionWindowController() const { 229 extensions::WindowController* PanelHost::GetExtensionWindowController() const {
246 return panel_->extension_window_controller(); 230 return panel_->extension_window_controller();
247 } 231 }
248 232
249 content::WebContents* PanelHost::GetAssociatedWebContents() const { 233 content::WebContents* PanelHost::GetAssociatedWebContents() const {
250 return web_contents_.get(); 234 return web_contents_.get();
251 } 235 }
252 236
253 void PanelHost::Reload() { 237 void PanelHost::Reload() {
254 content::RecordAction(UserMetricsAction("Reload")); 238 content::RecordAction(UserMetricsAction("Reload"));
255 web_contents_->GetController().Reload(true); 239 web_contents_->GetController().Reload(true);
256 } 240 }
257 241
258 void PanelHost::ReloadIgnoringCache() { 242 void PanelHost::ReloadIgnoringCache() {
259 content::RecordAction(UserMetricsAction("ReloadIgnoringCache")); 243 content::RecordAction(UserMetricsAction("ReloadIgnoringCache"));
260 web_contents_->GetController().ReloadIgnoringCache(true); 244 web_contents_->GetController().ReloadIgnoringCache(true);
261 } 245 }
262 246
263 void PanelHost::StopLoading() { 247 void PanelHost::StopLoading() {
264 content::RecordAction(UserMetricsAction("Stop")); 248 content::RecordAction(UserMetricsAction("Stop"));
265 web_contents_->Stop(); 249 web_contents_->Stop();
266 } 250 }
267 251
268 void PanelHost::Zoom(content::PageZoom zoom) { 252 void PanelHost::Zoom(content::PageZoom zoom) {
269 ui_zoom::PageZoom::Zoom(web_contents_.get(), zoom); 253 ui_zoom::PageZoom::Zoom(web_contents_.get(), zoom);
270 } 254 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698