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(); |