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

Unified Diff: chrome/browser/devtools/devtools_window.cc

Issue 379963002: [WIP] Make extension APIs work in devtools APIs when docked. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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 side-by-side diff with in-line comments
Download patch
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();

Powered by Google App Engine
This is Rietveld 408576698