Chromium Code Reviews| Index: chrome/browser/devtools/devtools_window.cc |
| diff --git a/chrome/browser/devtools/devtools_window.cc b/chrome/browser/devtools/devtools_window.cc |
| index 2b072dda8438e8fdd27bb41bed444137b268a3aa..51fae2b568a376fc1411b7c6fc61c385dda696af 100644 |
| --- a/chrome/browser/devtools/devtools_window.cc |
| +++ b/chrome/browser/devtools/devtools_window.cc |
| @@ -12,6 +12,7 @@ |
| #include "base/time/time.h" |
| #include "base/values.h" |
| #include "chrome/browser/chrome_page_zoom.h" |
| +#include "chrome/browser/extensions/chrome_extension_web_contents_observer.h" |
| #include "chrome/browser/file_select_helper.h" |
| #include "chrome/browser/infobars/infobar_service.h" |
| #include "chrome/browser/prefs/pref_service_syncable.h" |
| @@ -493,12 +494,16 @@ DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow( |
| content::RenderViewHost* inspected_rvh, |
| bool force_open, |
| const DevToolsToggleAction& action) { |
| + LOG(INFO) << "Toggling devtools window"; |
| + |
| scoped_refptr<DevToolsAgentHost> agent( |
| DevToolsAgentHost::GetOrCreateFor(inspected_rvh)); |
| content::DevToolsManager* manager = content::DevToolsManager::GetInstance(); |
| DevToolsWindow* window = FindDevToolsWindow(agent.get()); |
| bool do_open = force_open; |
| if (!window) { |
| + LOG(INFO) << "No window"; |
| + |
| Profile* profile = Profile::FromBrowserContext( |
| inspected_rvh->GetProcess()->GetBrowserContext()); |
| content::RecordAction( |
| @@ -509,6 +514,21 @@ DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow( |
| do_open = true; |
| } |
| + // Attach an extensions WebContentsObserver for the devtools API. |
| + content::WebContents* web_contents = |
| + content::WebContents::FromRenderViewHost(inspected_rvh); |
|
pfeldman
2014/07/10 13:44:36
I don't think inspected page contents should be in
|
| + if (web_contents) { |
| + LOG(INFO) << "there is no web contents"; |
| + extensions::ChromeExtensionWebContentsObserver::CreateForWebContents( |
| + web_contents); |
| + } else { |
| + LOG(INFO) << "extensions attached"; |
| + } |
| + |
| + LOG(INFO) << "attaching to the blah blah"; |
| + extensions::ChromeExtensionWebContentsObserver::CreateForWebContents( |
| + window->web_contents_for_test()); |
| + |
| // Update toolbar to reflect DevTools changes. |
| window->UpdateBrowserToolbar(); |
| @@ -708,10 +728,14 @@ DevToolsWindow::DevToolsWindow(Profile* profile, |
| g_instances.Get().push_back(this); |
| // There is no inspected_rvh in case of shared workers. |
| - if (inspected_rvh) |
| + if (inspected_rvh) { |
| inspected_contents_observer_.reset(new ObserverWithAccessor( |
| content::WebContents::FromRenderViewHost(inspected_rvh))); |
| + } |
| event_forwarder_.reset(new DevToolsEventForwarder(this)); |
| + LOG(INFO) << "Creating function dispatcher for devtools window"; |
| + extension_dispatcher_.reset( |
| + new extensions::ExtensionFunctionDispatcher(profile, this)); |
| } |
| // static |
| @@ -824,6 +848,10 @@ WebContents* DevToolsWindow::OpenURLFromTab( |
| } |
| void DevToolsWindow::ActivateContents(WebContents* contents) { |
| + LOG(INFO) << "web contents activated"; |
| + extensions::ChromeExtensionWebContentsObserver::CreateForWebContents( |
|
pfeldman
2014/07/10 13:44:36
I don't think you want to do this here. Wiring the
|
| + contents); |
| + |
| if (is_docked_) { |
| WebContents* inspected_tab = GetInspectedWebContents(); |
| inspected_tab->GetDelegate()->ActivateContents(inspected_tab); |
| @@ -838,6 +866,10 @@ void DevToolsWindow::AddNewContents(WebContents* source, |
| const gfx::Rect& initial_pos, |
| bool user_gesture, |
| bool* was_blocked) { |
| + LOG(INFO) << "web contents added"; |
| + extensions::ChromeExtensionWebContentsObserver::CreateForWebContents( |
|
pfeldman
2014/07/10 13:44:36
ditto.
|
| + new_contents); |
| + |
| if (new_contents == toolbox_web_contents_) { |
| toolbox_web_contents_->SetDelegate( |
| new DevToolsToolboxDelegate(toolbox_web_contents_, |
| @@ -862,6 +894,10 @@ void DevToolsWindow::WebContentsCreated(WebContents* source_contents, |
| const base::string16& frame_name, |
| const GURL& target_url, |
| WebContents* new_contents) { |
| + LOG(INFO) << "web contents created on " << target_url; |
|
pfeldman
2014/07/10 13:44:35
ditto.
|
| + extensions::ChromeExtensionWebContentsObserver::CreateForWebContents( |
| + new_contents); |
| + |
| if (target_url.SchemeIs(content::kChromeDevToolsScheme) && |
| target_url.query().find("toolbox=true") != std::string::npos) { |
| CHECK(can_dock_); |
| @@ -1139,6 +1175,19 @@ void DevToolsWindow::RenderProcessGone() { |
| CloseContents(main_web_contents_); |
| } |
| +extensions::WindowController* DevToolsWindow::GetExtensionWindowController() |
| + const { |
| + return NULL; |
| +} |
| + |
| +content::WebContents* DevToolsWindow::GetAssociatedWebContents() const { |
| + return main_web_contents_; |
| +} |
| + |
| +content::WebContents* DevToolsWindow::GetVisibleWebContents() const { |
| + return main_web_contents_; |
| +} |
| + |
| void DevToolsWindow::OnLoadCompleted() { |
| // First seed inspected tab id for extension APIs. |
| WebContents* inspected_web_contents = GetInspectedWebContents(); |