Index: chrome/browser/devtools/devtools_window.cc |
diff --git a/chrome/browser/devtools/devtools_window.cc b/chrome/browser/devtools/devtools_window.cc |
index 8b12c800b818c4656324a75793a00c86ca1ddce8..7b1c46dd2e560789ee18c68a2764c252abf56c55 100644 |
--- a/chrome/browser/devtools/devtools_window.cc |
+++ b/chrome/browser/devtools/devtools_window.cc |
@@ -6,32 +6,16 @@ |
#include <algorithm> |
-#include "base/command_line.h" |
#include "base/json/json_reader.h" |
-#include "base/json/json_writer.h" |
-#include "base/lazy_instance.h" |
#include "base/metrics/histogram.h" |
#include "base/prefs/scoped_user_pref_update.h" |
-#include "base/strings/string_number_conversions.h" |
-#include "base/strings/string_util.h" |
-#include "base/strings/utf_string_conversions.h" |
#include "base/time/time.h" |
#include "base/values.h" |
-#include "chrome/browser/browser_process.h" |
-#include "chrome/browser/chrome_notification_types.h" |
#include "chrome/browser/chrome_page_zoom.h" |
-#include "chrome/browser/extensions/api/debugger/debugger_api.h" |
-#include "chrome/browser/extensions/chrome_extension_web_contents_observer.h" |
-#include "chrome/browser/extensions/extension_service.h" |
#include "chrome/browser/file_select_helper.h" |
-#include "chrome/browser/infobars/confirm_infobar_delegate.h" |
-#include "chrome/browser/infobars/infobar_service.h" |
#include "chrome/browser/prefs/pref_service_syncable.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/sessions/session_tab_helper.h" |
-#include "chrome/browser/themes/theme_properties.h" |
-#include "chrome/browser/themes/theme_service.h" |
-#include "chrome/browser/themes/theme_service_factory.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/browser_dialogs.h" |
#include "chrome/browser/ui/browser_iterator.h" |
@@ -42,19 +26,14 @@ |
#include "chrome/browser/ui/tabs/tab_strip_model.h" |
#include "chrome/browser/ui/webui/devtools_ui.h" |
#include "chrome/common/chrome_switches.h" |
-#include "chrome/common/extensions/manifest_url_handler.h" |
#include "chrome/common/pref_names.h" |
#include "chrome/common/render_messages.h" |
#include "chrome/common/url_constants.h" |
-#include "components/infobars/core/infobar.h" |
#include "components/user_prefs/pref_registry_syncable.h" |
#include "content/public/browser/browser_thread.h" |
-#include "content/public/browser/child_process_security_policy.h" |
#include "content/public/browser/devtools_agent_host.h" |
#include "content/public/browser/devtools_client_host.h" |
#include "content/public/browser/devtools_manager.h" |
-#include "content/public/browser/favicon_status.h" |
-#include "content/public/browser/load_notification_details.h" |
#include "content/public/browser/native_web_keyboard_event.h" |
#include "content/public/browser/navigation_controller.h" |
#include "content/public/browser/navigation_entry.h" |
@@ -66,111 +45,32 @@ |
#include "content/public/browser/web_contents.h" |
#include "content/public/browser/web_contents_observer.h" |
#include "content/public/browser/web_contents_view.h" |
-#include "content/public/common/bindings_policy.h" |
#include "content/public/common/content_client.h" |
#include "content/public/common/page_transition_types.h" |
-#include "content/public/common/renderer_preferences.h" |
#include "content/public/common/url_constants.h" |
#include "content/public/test/test_utils.h" |
-#include "extensions/browser/extension_system.h" |
-#include "extensions/common/extension_set.h" |
-#include "grit/generated_resources.h" |
#include "third_party/WebKit/public/web/WebInputEvent.h" |
-#include "ui/base/l10n/l10n_util.h" |
#include "ui/events/keycodes/keyboard_codes.h" |
using base::DictionaryValue; |
using blink::WebInputEvent; |
using content::BrowserThread; |
using content::DevToolsAgentHost; |
- |
- |
-// DevToolsConfirmInfoBarDelegate --------------------------------------------- |
- |
-class DevToolsConfirmInfoBarDelegate : public ConfirmInfoBarDelegate { |
- public: |
- // If |infobar_service| is NULL, runs |callback| with a single argument with |
- // value "false". Otherwise, creates a dev tools confirm infobar and delegate |
- // and adds the infobar to |infobar_service|. |
- static void Create(InfoBarService* infobar_service, |
- const DevToolsWindow::InfoBarCallback& callback, |
- const base::string16& message); |
- |
- private: |
- DevToolsConfirmInfoBarDelegate( |
- const DevToolsWindow::InfoBarCallback& callback, |
- const base::string16& message); |
- virtual ~DevToolsConfirmInfoBarDelegate(); |
- |
- virtual base::string16 GetMessageText() const OVERRIDE; |
- virtual base::string16 GetButtonLabel(InfoBarButton button) const OVERRIDE; |
- virtual bool Accept() OVERRIDE; |
- virtual bool Cancel() OVERRIDE; |
- |
- DevToolsWindow::InfoBarCallback callback_; |
- const base::string16 message_; |
- |
- DISALLOW_COPY_AND_ASSIGN(DevToolsConfirmInfoBarDelegate); |
-}; |
- |
-void DevToolsConfirmInfoBarDelegate::Create( |
- InfoBarService* infobar_service, |
- const DevToolsWindow::InfoBarCallback& callback, |
- const base::string16& message) { |
- if (!infobar_service) { |
- callback.Run(false); |
- return; |
- } |
- |
- infobar_service->AddInfoBar(ConfirmInfoBarDelegate::CreateInfoBar( |
- scoped_ptr<ConfirmInfoBarDelegate>( |
- new DevToolsConfirmInfoBarDelegate(callback, message)))); |
-} |
- |
-DevToolsConfirmInfoBarDelegate::DevToolsConfirmInfoBarDelegate( |
- const DevToolsWindow::InfoBarCallback& callback, |
- const base::string16& message) |
- : ConfirmInfoBarDelegate(), |
- callback_(callback), |
- message_(message) { |
-} |
- |
-DevToolsConfirmInfoBarDelegate::~DevToolsConfirmInfoBarDelegate() { |
- if (!callback_.is_null()) |
- callback_.Run(false); |
-} |
- |
-base::string16 DevToolsConfirmInfoBarDelegate::GetMessageText() const { |
- return message_; |
-} |
- |
-base::string16 DevToolsConfirmInfoBarDelegate::GetButtonLabel( |
- InfoBarButton button) const { |
- return l10n_util::GetStringUTF16((button == BUTTON_OK) ? |
- IDS_DEV_TOOLS_CONFIRM_ALLOW_BUTTON : IDS_DEV_TOOLS_CONFIRM_DENY_BUTTON); |
-} |
- |
-bool DevToolsConfirmInfoBarDelegate::Accept() { |
- callback_.Run(true); |
- callback_.Reset(); |
- return true; |
-} |
- |
-bool DevToolsConfirmInfoBarDelegate::Cancel() { |
- callback_.Run(false); |
- callback_.Reset(); |
- return true; |
-} |
- |
-// DevToolsEventForwarder ----------------------------------------------------- |
+using content::WebContents; |
namespace { |
+typedef std::vector<DevToolsWindow*> DevToolsWindows; |
+base::LazyInstance<DevToolsWindows>::Leaky g_instances = |
+ LAZY_INSTANCE_INITIALIZER; |
+ |
static const char kKeyUpEventName[] = "keyup"; |
static const char kKeyDownEventName[] = "keydown"; |
} // namespace |
+// DevToolsEventForwarder ----------------------------------------------------- |
+ |
class DevToolsEventForwarder { |
public: |
explicit DevToolsEventForwarder(DevToolsWindow* window) |
@@ -285,10 +185,10 @@ int DevToolsEventForwarder::VirtualKeyCodeWithoutLocation(int key_code) |
class DevToolsWindow::InspectedWebContentsObserver |
: public content::WebContentsObserver { |
public: |
- explicit InspectedWebContentsObserver(content::WebContents* web_contents); |
+ explicit InspectedWebContentsObserver(WebContents* web_contents); |
virtual ~InspectedWebContentsObserver(); |
- content::WebContents* web_contents() { |
+ WebContents* web_contents() { |
return WebContentsObserver::web_contents(); |
} |
@@ -297,94 +197,18 @@ class DevToolsWindow::InspectedWebContentsObserver |
}; |
DevToolsWindow::InspectedWebContentsObserver::InspectedWebContentsObserver( |
- content::WebContents* web_contents) |
+ WebContents* web_contents) |
: WebContentsObserver(web_contents) { |
} |
DevToolsWindow::InspectedWebContentsObserver::~InspectedWebContentsObserver() { |
} |
- |
-// DevToolsWindow::FrontendWebContentsObserver -------------------------------- |
- |
-class DevToolsWindow::FrontendWebContentsObserver |
- : public content::WebContentsObserver { |
- public: |
- explicit FrontendWebContentsObserver(DevToolsWindow* window); |
- virtual ~FrontendWebContentsObserver(); |
- |
- private: |
- // contents::WebContentsObserver: |
- virtual void AboutToNavigateRenderView( |
- content::RenderViewHost* render_view_host) OVERRIDE; |
- virtual void DocumentOnLoadCompletedInMainFrame(int32 page_id) OVERRIDE; |
- virtual void WebContentsDestroyed(content::WebContents*) OVERRIDE; |
- |
- DevToolsWindow* devtools_window_; |
- DISALLOW_COPY_AND_ASSIGN(FrontendWebContentsObserver); |
-}; |
- |
-DevToolsWindow::FrontendWebContentsObserver::FrontendWebContentsObserver( |
- DevToolsWindow* devtools_window) |
- : WebContentsObserver(devtools_window->web_contents()), |
- devtools_window_(devtools_window) { |
-} |
- |
-void DevToolsWindow::FrontendWebContentsObserver::WebContentsDestroyed( |
- content::WebContents* contents) { |
- delete devtools_window_; |
-} |
- |
-DevToolsWindow::FrontendWebContentsObserver::~FrontendWebContentsObserver() { |
-} |
- |
-void DevToolsWindow::FrontendWebContentsObserver::AboutToNavigateRenderView( |
- content::RenderViewHost* render_view_host) { |
- content::DevToolsClientHost::SetupDevToolsFrontendClient(render_view_host); |
-} |
- |
-void DevToolsWindow::FrontendWebContentsObserver:: |
- DocumentOnLoadCompletedInMainFrame(int32 page_id) { |
- devtools_window_->DocumentOnLoadCompletedInMainFrame(); |
-} |
- |
// DevToolsWindow ------------------------------------------------------------- |
-namespace { |
- |
-typedef std::vector<DevToolsWindow*> DevToolsWindows; |
-base::LazyInstance<DevToolsWindows>::Leaky g_instances = |
- LAZY_INSTANCE_INITIALIZER; |
- |
-static const char kFrontendHostId[] = "id"; |
-static const char kFrontendHostMethod[] = "method"; |
-static const char kFrontendHostParams[] = "params"; |
- |
-std::string SkColorToRGBAString(SkColor color) { |
- // We avoid StringPrintf because it will use locale specific formatters for |
- // the double (e.g. ',' instead of '.' in German). |
- return "rgba(" + base::IntToString(SkColorGetR(color)) + "," + |
- base::IntToString(SkColorGetG(color)) + "," + |
- base::IntToString(SkColorGetB(color)) + "," + |
- base::DoubleToString(SkColorGetA(color) / 255.0) + ")"; |
-} |
- |
-base::DictionaryValue* CreateFileSystemValue( |
- DevToolsFileHelper::FileSystem file_system) { |
- base::DictionaryValue* file_system_value = new base::DictionaryValue(); |
- file_system_value->SetString("fileSystemName", file_system.file_system_name); |
- file_system_value->SetString("rootURL", file_system.root_url); |
- file_system_value->SetString("fileSystemPath", file_system.file_system_path); |
- return file_system_value; |
-} |
- |
-} // namespace |
- |
const char DevToolsWindow::kDevToolsApp[] = "DevToolsApp"; |
DevToolsWindow::~DevToolsWindow() { |
- content::DevToolsManager::GetInstance()->ClientHostClosing( |
- frontend_host_.get()); |
UpdateBrowserToolbar(); |
DevToolsWindows* instances = g_instances.Pointer(); |
@@ -392,14 +216,6 @@ DevToolsWindow::~DevToolsWindow() { |
std::find(instances->begin(), instances->end(), this)); |
DCHECK(it != instances->end()); |
instances->erase(it); |
- |
- for (IndexingJobsMap::const_iterator jobs_it(indexing_jobs_.begin()); |
- jobs_it != indexing_jobs_.end(); ++jobs_it) { |
- jobs_it->second->Stop(); |
- } |
- indexing_jobs_.clear(); |
- if (device_listener_enabled_) |
- EnableRemoteDeviceCounter(false); |
} |
// static |
@@ -444,7 +260,7 @@ void DevToolsWindow::RegisterProfilePrefs( |
// static |
DevToolsWindow* DevToolsWindow::GetDockedInstanceForInspectedTab( |
- content::WebContents* inspected_web_contents) { |
+ WebContents* inspected_web_contents) { |
DevToolsWindow* window = GetInstanceForInspectedRenderViewHost( |
inspected_web_contents->GetRenderViewHost()); |
if (!window) |
@@ -469,7 +285,7 @@ DevToolsWindow* DevToolsWindow::GetInstanceForInspectedRenderViewHost( |
// static |
DevToolsWindow* DevToolsWindow::GetInstanceForInspectedWebContents( |
- content::WebContents* inspected_web_contents) { |
+ WebContents* inspected_web_contents) { |
if (!inspected_web_contents) |
return NULL; |
return GetInstanceForInspectedRenderViewHost( |
@@ -490,7 +306,7 @@ DevToolsWindow* DevToolsWindow::OpenDevToolsWindowForWorker( |
window = DevToolsWindow::CreateDevToolsWindowForWorker(profile); |
// Will disconnect the current client host if there is one. |
content::DevToolsManager::GetInstance()->RegisterDevToolsClientHostFor( |
- worker_agent, window->frontend_host_.get()); |
+ worker_agent, window->frontend_host()); |
} |
window->ScheduleShow(DevToolsToggleAction::Show()); |
return window; |
@@ -561,7 +377,7 @@ void DevToolsWindow::OpenExternalFrontend( |
window = Create(profile, DevToolsUI::GetProxyURL(frontend_url), NULL, |
false, true, false); |
content::DevToolsManager::GetInstance()->RegisterDevToolsClientHostFor( |
- agent_host, window->frontend_host_.get()); |
+ agent_host, window->frontend_host()); |
} |
window->ScheduleShow(DevToolsToggleAction::Show()); |
} |
@@ -583,7 +399,7 @@ DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow( |
base::UserMetricsAction("DevTools_InspectRenderer")); |
window = Create(profile, GURL(), inspected_rvh, false, false, true); |
manager->RegisterDevToolsClientHostFor(agent.get(), |
- window->frontend_host_.get()); |
+ window->frontend_host()); |
do_open = true; |
} |
@@ -616,18 +432,6 @@ void DevToolsWindow::InspectElement(content::RenderViewHost* inspected_rvh, |
window->inspect_element_start_time_ = start_time; |
} |
-void DevToolsWindow::InspectedContentsClosing() { |
- intercepted_page_beforeunload_ = false; |
- // This will prevent any activity after frontend is loaded. |
- action_on_load_ = DevToolsToggleAction::NoOp(); |
- ignore_set_is_docked_ = true; |
- web_contents_->GetRenderViewHost()->ClosePage(); |
-} |
- |
-content::RenderViewHost* DevToolsWindow::GetRenderViewHost() { |
- return web_contents_->GetRenderViewHost(); |
-} |
- |
const DevToolsContentsResizingStrategy& |
DevToolsWindow::GetContentsResizingStrategy() const { |
return contents_resizing_strategy_; |
@@ -670,21 +474,21 @@ void DevToolsWindow::Show(const DevToolsToggleAction& action) { |
// Tell inspected browser to update splitter and switch to inspected panel. |
BrowserWindow* inspected_window = inspected_browser->window(); |
- web_contents_->SetDelegate(this); |
+ web_contents()->SetDelegate(this); |
TabStripModel* tab_strip_model = inspected_browser->tab_strip_model(); |
tab_strip_model->ActivateTabAt(inspected_tab_index, true); |
inspected_window->UpdateDevTools(); |
- web_contents_->GetView()->SetInitialFocus(); |
+ web_contents()->GetView()->SetInitialFocus(); |
inspected_window->Show(); |
// On Aura, focusing once is not enough. Do it again. |
// Note that focusing only here but not before isn't enough either. We just |
// need to focus twice. |
- web_contents_->GetView()->SetInitialFocus(); |
+ web_contents()->GetView()->SetInitialFocus(); |
- PrefsTabHelper::CreateForWebContents(web_contents_); |
- GetRenderViewHost()->SyncRendererPrefs(); |
+ PrefsTabHelper::CreateForWebContents(web_contents()); |
+ web_contents()->GetRenderViewHost()->SyncRendererPrefs(); |
DoAction(action); |
return; |
@@ -700,14 +504,14 @@ void DevToolsWindow::Show(const DevToolsToggleAction& action) { |
if (should_show_window) { |
browser_->window()->Show(); |
- web_contents_->GetView()->SetInitialFocus(); |
+ web_contents()->GetView()->SetInitialFocus(); |
} |
DoAction(action); |
} |
// static |
-bool DevToolsWindow::HandleBeforeUnload(content::WebContents* frontend_contents, |
+bool DevToolsWindow::HandleBeforeUnload(WebContents* frontend_contents, |
bool proceed, bool* proceed_to_fire_unload) { |
DevToolsWindow* window = AsDevToolsWindow( |
frontend_contents->GetRenderViewHost()); |
@@ -721,7 +525,7 @@ bool DevToolsWindow::HandleBeforeUnload(content::WebContents* frontend_contents, |
} |
// static |
-bool DevToolsWindow::InterceptPageBeforeUnload(content::WebContents* contents) { |
+bool DevToolsWindow::InterceptPageBeforeUnload(WebContents* contents) { |
DevToolsWindow* window = |
DevToolsWindow::GetInstanceForInspectedRenderViewHost( |
contents->GetRenderViewHost()); |
@@ -743,7 +547,7 @@ bool DevToolsWindow::InterceptPageBeforeUnload(content::WebContents* contents) { |
// static |
bool DevToolsWindow::NeedsToInterceptBeforeUnload( |
- content::WebContents* contents) { |
+ WebContents* contents) { |
DevToolsWindow* window = |
DevToolsWindow::GetInstanceForInspectedRenderViewHost( |
contents->GetRenderViewHost()); |
@@ -759,7 +563,7 @@ bool DevToolsWindow::HasFiredBeforeUnloadEventForDevToolsBrowser( |
// beforeunload. |
if (browser->tab_strip_model()->empty()) |
return true; |
- content::WebContents* contents = |
+ WebContents* contents = |
browser->tab_strip_model()->GetWebContentsAt(0); |
DevToolsWindow* window = AsDevToolsWindow(contents->GetRenderViewHost()); |
if (!window) |
@@ -768,7 +572,7 @@ bool DevToolsWindow::HasFiredBeforeUnloadEventForDevToolsBrowser( |
} |
// static |
-void DevToolsWindow::OnPageCloseCanceled(content::WebContents* contents) { |
+void DevToolsWindow::OnPageCloseCanceled(WebContents* contents) { |
DevToolsWindow *window = |
DevToolsWindow::GetInstanceForInspectedRenderViewHost( |
contents->GetRenderViewHost()); |
@@ -783,59 +587,29 @@ DevToolsWindow::DevToolsWindow(Profile* profile, |
const GURL& url, |
content::RenderViewHost* inspected_rvh, |
bool can_dock) |
- : profile_(profile), |
+ : DevToolsWindowBase( |
+ WebContents::Create(WebContents::CreateParams(profile)), url), |
browser_(NULL), |
is_docked_(true), |
can_dock_(can_dock), |
- device_listener_enabled_(false), |
// This initialization allows external front-end to work without changes. |
// We don't wait for docking call, but instead immediately show undocked. |
// Passing "dockSide=undocked" parameter ensures proper UI. |
load_state_(can_dock ? kNotLoaded : kIsDockedSet), |
action_on_load_(DevToolsToggleAction::NoOp()), |
ignore_set_is_docked_(false), |
- intercepted_page_beforeunload_(false), |
- weak_factory_(this) { |
- web_contents_ = |
- content::WebContents::Create(content::WebContents::CreateParams(profile)); |
- frontend_contents_observer_.reset(new FrontendWebContentsObserver(this)); |
- web_contents_->GetMutableRendererPrefs()->can_accept_load_drops = false; |
+ intercepted_page_beforeunload_(false) { |
// Set up delegate, so we get fully-functional window immediately. |
// It will not appear in UI though until |load_state_ == kLoadCompleted|. |
- web_contents_->SetDelegate(this); |
- |
- web_contents_->GetController().LoadURL(url, content::Referrer(), |
- content::PAGE_TRANSITION_AUTO_TOPLEVEL, std::string()); |
- |
- frontend_host_.reset(content::DevToolsClientHost::CreateDevToolsFrontendHost( |
- web_contents_, this)); |
- file_helper_.reset(new DevToolsFileHelper(web_contents_, profile)); |
- file_system_indexer_ = new DevToolsFileSystemIndexer(); |
- extensions::ChromeExtensionWebContentsObserver::CreateForWebContents( |
- web_contents_); |
+ web_contents()->SetDelegate(this); |
g_instances.Get().push_back(this); |
- // Wipe out page icon so that the default application icon is used. |
- content::NavigationEntry* entry = |
- web_contents_->GetController().GetActiveEntry(); |
- entry->GetFavicon().image = gfx::Image(); |
- entry->GetFavicon().valid = true; |
- |
- // Register on-load actions. |
- registrar_.Add( |
- this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED, |
- content::Source<ThemeService>( |
- ThemeServiceFactory::GetForProfile(profile_))); |
- |
// There is no inspected_rvh in case of shared workers. |
if (inspected_rvh) |
inspected_contents_observer_.reset(new InspectedWebContentsObserver( |
content::WebContents::FromRenderViewHost(inspected_rvh))); |
- |
- embedder_message_dispatcher_.reset( |
- DevToolsEmbedderMessageDispatcher::createForDevToolsFrontend(this)); |
event_forwarder_.reset(new DevToolsEventForwarder(this)); |
} |
@@ -851,7 +625,7 @@ DevToolsWindow* DevToolsWindow::Create( |
// Check for a place to dock. |
Browser* browser = NULL; |
int tab; |
- content::WebContents* inspected_web_contents = |
+ WebContents* inspected_web_contents = |
content::WebContents::FromRenderViewHost(inspected_rvh); |
if (!FindInspectedBrowserAndTabIndex(inspected_web_contents, |
&browser, &tab) || |
@@ -875,31 +649,22 @@ GURL DevToolsWindow::GetDevToolsURL(Profile* profile, |
bool shared_worker_frontend, |
bool external_frontend, |
bool can_dock) { |
+ // Compatibility errors are encoded with data urls, pass them |
+ // through with no decoration. |
if (base_url.SchemeIs("data")) |
return base_url; |
std::string frontend_url( |
base_url.is_empty() ? chrome::kChromeUIDevToolsURL : base_url.spec()); |
- ThemeService* tp = ThemeServiceFactory::GetForProfile(profile); |
- DCHECK(tp); |
std::string url_string( |
frontend_url + |
- ((frontend_url.find("?") == std::string::npos) ? "?" : "&") + |
- "dockSide=undocked" + // TODO(dgozman): remove this support in M38. |
- "&toolbarColor=" + |
- SkColorToRGBAString(tp->GetColor(ThemeProperties::COLOR_TOOLBAR)) + |
- "&textColor=" + |
- SkColorToRGBAString(tp->GetColor(ThemeProperties::COLOR_BOOKMARK_TEXT))); |
+ ((frontend_url.find("?") == std::string::npos) ? "?" : "&")); |
if (shared_worker_frontend) |
url_string += "&isSharedWorker=true"; |
if (external_frontend) |
url_string += "&remoteFrontend=true"; |
if (can_dock) |
url_string += "&can_dock=true"; |
- if (CommandLine::ForCurrentProcess()->HasSwitch( |
- switches::kEnableDevToolsExperiments)) |
- url_string += "&experiments=true"; |
- url_string += "&updateAppcache"; |
return GURL(url_string); |
} |
@@ -910,7 +675,7 @@ DevToolsWindow* DevToolsWindow::FindDevToolsWindow( |
content::DevToolsManager* manager = content::DevToolsManager::GetInstance(); |
for (DevToolsWindows::iterator it(instances->begin()); it != instances->end(); |
++it) { |
- if (manager->GetDevToolsAgentHostFor((*it)->frontend_host_.get()) == |
+ if (manager->GetDevToolsAgentHostFor((*it)->frontend_host()) == |
agent_host) |
return *it; |
} |
@@ -925,50 +690,60 @@ DevToolsWindow* DevToolsWindow::AsDevToolsWindow( |
DevToolsWindows* instances = g_instances.Pointer(); |
for (DevToolsWindows::iterator it(instances->begin()); it != instances->end(); |
++it) { |
- if ((*it)->web_contents_->GetRenderViewHost() == window_rvh) |
+ if ((*it)->web_contents()->GetRenderViewHost() == window_rvh) |
return *it; |
} |
return NULL; |
} |
-void DevToolsWindow::Observe(int type, |
- const content::NotificationSource& source, |
- const content::NotificationDetails& details) { |
- DCHECK_EQ(chrome::NOTIFICATION_BROWSER_THEME_CHANGED, type); |
- UpdateTheme(); |
+void DevToolsWindow::InspectedContentsClosing() { |
+ intercepted_page_beforeunload_ = false; |
+ // This will prevent any activity after frontend is loaded. |
+ action_on_load_ = DevToolsToggleAction::NoOp(); |
+ ignore_set_is_docked_ = true; |
+ DevToolsWindowBase::InspectedContentsClosing(); |
} |
-content::WebContents* DevToolsWindow::OpenURLFromTab( |
- content::WebContents* source, |
+WebContents* DevToolsWindow::OpenURLFromTab( |
+ WebContents* source, |
const content::OpenURLParams& params) { |
- DCHECK(source == web_contents_); |
+ DCHECK(source == web_contents()); |
if (!params.url.SchemeIs(content::kChromeDevToolsScheme)) { |
- content::WebContents* inspected_web_contents = GetInspectedWebContents(); |
+ WebContents* inspected_web_contents = GetInspectedWebContents(); |
return inspected_web_contents ? |
inspected_web_contents->OpenURL(params) : NULL; |
} |
content::DevToolsManager* manager = content::DevToolsManager::GetInstance(); |
scoped_refptr<DevToolsAgentHost> agent_host( |
- manager->GetDevToolsAgentHostFor(frontend_host_.get())); |
+ manager->GetDevToolsAgentHostFor(frontend_host())); |
if (!agent_host.get()) |
return NULL; |
- manager->ClientHostClosing(frontend_host_.get()); |
+ manager->ClientHostClosing(frontend_host()); |
manager->RegisterDevToolsClientHostFor(agent_host.get(), |
- frontend_host_.get()); |
+ frontend_host()); |
content::NavigationController::LoadURLParams load_url_params(params.url); |
- web_contents_->GetController().LoadURLWithParams(load_url_params); |
- return web_contents_; |
+ web_contents()->GetController().LoadURLWithParams(load_url_params); |
+ return web_contents(); |
+} |
+ |
+void DevToolsWindow::ActivateContents(WebContents* contents) { |
+ if (is_docked_) { |
+ WebContents* inspected_tab = GetInspectedWebContents(); |
+ inspected_tab->GetDelegate()->ActivateContents(inspected_tab); |
+ } else { |
+ browser_->window()->Activate(); |
+ } |
} |
-void DevToolsWindow::AddNewContents(content::WebContents* source, |
- content::WebContents* new_contents, |
+void DevToolsWindow::AddNewContents(WebContents* source, |
+ WebContents* new_contents, |
WindowOpenDisposition disposition, |
const gfx::Rect& initial_pos, |
bool user_gesture, |
bool* was_blocked) { |
- content::WebContents* inspected_web_contents = GetInspectedWebContents(); |
+ WebContents* inspected_web_contents = GetInspectedWebContents(); |
if (inspected_web_contents) { |
inspected_web_contents->GetDelegate()->AddNewContents( |
source, new_contents, disposition, initial_pos, user_gesture, |
@@ -976,7 +751,7 @@ void DevToolsWindow::AddNewContents(content::WebContents* source, |
} |
} |
-void DevToolsWindow::CloseContents(content::WebContents* source) { |
+void DevToolsWindow::CloseContents(WebContents* source) { |
CHECK(is_docked_); |
// This will prevent any activity after frontend is loaded. |
action_on_load_ = DevToolsToggleAction::NoOp(); |
@@ -985,10 +760,10 @@ void DevToolsWindow::CloseContents(content::WebContents* source) { |
BrowserWindow* inspected_window = GetInspectedBrowserWindow(); |
if (inspected_window) |
inspected_window->UpdateDevTools(); |
- // In case of docked web_contents_, we own it so delete here. |
+ // In case of docked web_contents(), we own it so delete here. |
// Embedding DevTools window will be deleted as a result of |
// WebContentsDestroyed callback. |
- delete web_contents_; |
+ delete web_contents(); |
} |
void DevToolsWindow::ContentsZoomChange(bool zoom_in) { |
@@ -997,19 +772,19 @@ void DevToolsWindow::ContentsZoomChange(bool zoom_in) { |
zoom_in ? content::PAGE_ZOOM_IN : content::PAGE_ZOOM_OUT); |
} |
-void DevToolsWindow::BeforeUnloadFired(content::WebContents* tab, |
+void DevToolsWindow::BeforeUnloadFired(WebContents* tab, |
bool proceed, |
bool* proceed_to_fire_unload) { |
if (!intercepted_page_beforeunload_) { |
// Docked devtools window closed directly. |
if (proceed) { |
content::DevToolsManager::GetInstance()->ClientHostClosing( |
- frontend_host_.get()); |
+ frontend_host()); |
} |
*proceed_to_fire_unload = proceed; |
} else { |
// Inspected page is attempting to close. |
- content::WebContents* inspected_web_contents = GetInspectedWebContents(); |
+ WebContents* inspected_web_contents = GetInspectedWebContents(); |
if (proceed) { |
inspected_web_contents->DispatchBeforeUnload(false); |
} else { |
@@ -1023,7 +798,7 @@ void DevToolsWindow::BeforeUnloadFired(content::WebContents* tab, |
} |
bool DevToolsWindow::PreHandleKeyboardEvent( |
- content::WebContents* source, |
+ WebContents* source, |
const content::NativeWebKeyboardEvent& event, |
bool* is_keyboard_shortcut) { |
if (is_docked_) { |
@@ -1037,7 +812,7 @@ bool DevToolsWindow::PreHandleKeyboardEvent( |
} |
void DevToolsWindow::HandleKeyboardEvent( |
- content::WebContents* source, |
+ WebContents* source, |
const content::NativeWebKeyboardEvent& event) { |
if (is_docked_) { |
if (event.windowsKeyCode == 0x08) { |
@@ -1051,25 +826,25 @@ void DevToolsWindow::HandleKeyboardEvent( |
} |
content::JavaScriptDialogManager* DevToolsWindow::GetJavaScriptDialogManager() { |
- content::WebContents* inspected_web_contents = GetInspectedWebContents(); |
+ WebContents* inspected_web_contents = GetInspectedWebContents(); |
return (inspected_web_contents && inspected_web_contents->GetDelegate()) ? |
inspected_web_contents->GetDelegate()->GetJavaScriptDialogManager() : |
content::WebContentsDelegate::GetJavaScriptDialogManager(); |
} |
content::ColorChooser* DevToolsWindow::OpenColorChooser( |
- content::WebContents* web_contents, |
+ WebContents* web_contents, |
SkColor initial_color, |
const std::vector<content::ColorSuggestion>& suggestions) { |
return chrome::ShowColorChooser(web_contents, initial_color); |
} |
-void DevToolsWindow::RunFileChooser(content::WebContents* web_contents, |
+void DevToolsWindow::RunFileChooser(WebContents* web_contents, |
const content::FileChooserParams& params) { |
FileSelectHelper::RunFileChooser(web_contents, params); |
} |
-void DevToolsWindow::WebContentsFocused(content::WebContents* contents) { |
+void DevToolsWindow::WebContentsFocused(WebContents* contents) { |
Browser* inspected_browser = NULL; |
int inspected_tab_index = -1; |
if (is_docked_ && FindInspectedBrowserAndTabIndex(GetInspectedWebContents(), |
@@ -1079,7 +854,7 @@ void DevToolsWindow::WebContentsFocused(content::WebContents* contents) { |
} |
bool DevToolsWindow::PreHandleGestureEvent( |
- content::WebContents* source, |
+ WebContents* source, |
const blink::WebGestureEvent& event) { |
// Disable pinch zooming. |
return event.type == blink::WebGestureEvent::GesturePinchBegin || |
@@ -1087,57 +862,19 @@ bool DevToolsWindow::PreHandleGestureEvent( |
event.type == blink::WebGestureEvent::GesturePinchEnd; |
} |
-void DevToolsWindow::DispatchOnEmbedder(const std::string& message) { |
- std::string method; |
- base::ListValue empty_params; |
- base::ListValue* params = &empty_params; |
- |
- base::DictionaryValue* dict = NULL; |
- scoped_ptr<base::Value> parsed_message(base::JSONReader::Read(message)); |
- if (!parsed_message || |
- !parsed_message->GetAsDictionary(&dict) || |
- !dict->GetString(kFrontendHostMethod, &method) || |
- (dict->HasKey(kFrontendHostParams) && |
- !dict->GetList(kFrontendHostParams, ¶ms))) { |
- LOG(ERROR) << "Invalid message was sent to embedder: " << message; |
- return; |
- } |
- |
- int id = 0; |
- dict->GetInteger(kFrontendHostId, &id); |
- |
- std::string error; |
- embedder_message_dispatcher_->Dispatch(method, params, &error); |
- if (id) { |
- scoped_ptr<base::Value> id_value(base::Value::CreateIntegerValue(id)); |
- scoped_ptr<base::Value> error_value(base::Value::CreateStringValue(error)); |
- CallClientFunction("InspectorFrontendAPI.embedderMessageAck", |
- id_value.get(), error_value.get(), NULL); |
- } |
-} |
- |
void DevToolsWindow::ActivateWindow() { |
if (is_docked_ && GetInspectedBrowserWindow()) |
- web_contents_->GetView()->Focus(); |
+ web_contents()->GetView()->Focus(); |
else if (!is_docked_ && !browser_->window()->IsActive()) |
browser_->window()->Activate(); |
} |
-void DevToolsWindow::ActivateContents(content::WebContents* contents) { |
- if (is_docked_) { |
- content::WebContents* inspected_tab = this->GetInspectedWebContents(); |
- inspected_tab->GetDelegate()->ActivateContents(inspected_tab); |
- } else { |
- browser_->window()->Activate(); |
- } |
-} |
- |
void DevToolsWindow::CloseWindow() { |
DCHECK(is_docked_); |
// This will prevent any activity after frontend is loaded. |
action_on_load_ = DevToolsToggleAction::NoOp(); |
ignore_set_is_docked_ = true; |
- web_contents_->DispatchBeforeUnload(false); |
+ web_contents()->DispatchBeforeUnload(false); |
} |
void DevToolsWindow::SetContentsInsets( |
@@ -1222,7 +959,7 @@ void DevToolsWindow::SetIsDocked(bool dock_requested) { |
// the browser object's close and delete. Remove observer first. |
TabStripModel* tab_strip_model = browser_->tab_strip_model(); |
tab_strip_model->DetachWebContentsAt( |
- tab_strip_model->GetIndexOfWebContents(web_contents_)); |
+ tab_strip_model->GetIndexOfWebContents(web_contents())); |
browser_ = NULL; |
} else if (!dock_requested && was_docked) { |
// Update inspected window to hide split and reset it. |
@@ -1238,7 +975,7 @@ void DevToolsWindow::OpenInNewTab(const std::string& url) { |
content::OpenURLParams params( |
GURL(url), content::Referrer(), NEW_FOREGROUND_TAB, |
content::PAGE_TRANSITION_LINK, false); |
- content::WebContents* inspected_web_contents = GetInspectedWebContents(); |
+ WebContents* inspected_web_contents = GetInspectedWebContents(); |
if (inspected_web_contents) { |
inspected_web_contents->OpenURL(params); |
} else { |
@@ -1264,264 +1001,14 @@ void DevToolsWindow::OpenInNewTab(const std::string& url) { |
} |
} |
-void DevToolsWindow::SaveToFile(const std::string& url, |
- const std::string& content, |
- bool save_as) { |
- file_helper_->Save(url, content, save_as, |
- base::Bind(&DevToolsWindow::FileSavedAs, |
- weak_factory_.GetWeakPtr(), url), |
- base::Bind(&DevToolsWindow::CanceledFileSaveAs, |
- weak_factory_.GetWeakPtr(), url)); |
-} |
- |
-void DevToolsWindow::AppendToFile(const std::string& url, |
- const std::string& content) { |
- file_helper_->Append(url, content, |
- base::Bind(&DevToolsWindow::AppendedTo, |
- weak_factory_.GetWeakPtr(), url)); |
-} |
- |
-void DevToolsWindow::RequestFileSystems() { |
- CHECK(web_contents_->GetURL().SchemeIs(content::kChromeDevToolsScheme)); |
- file_helper_->RequestFileSystems(base::Bind( |
- &DevToolsWindow::FileSystemsLoaded, weak_factory_.GetWeakPtr())); |
-} |
- |
-void DevToolsWindow::AddFileSystem() { |
- CHECK(web_contents_->GetURL().SchemeIs(content::kChromeDevToolsScheme)); |
- file_helper_->AddFileSystem( |
- base::Bind(&DevToolsWindow::FileSystemAdded, weak_factory_.GetWeakPtr()), |
- base::Bind(&DevToolsWindow::ShowDevToolsConfirmInfoBar, |
- weak_factory_.GetWeakPtr())); |
-} |
- |
-void DevToolsWindow::RemoveFileSystem(const std::string& file_system_path) { |
- CHECK(web_contents_->GetURL().SchemeIs(content::kChromeDevToolsScheme)); |
- file_helper_->RemoveFileSystem(file_system_path); |
- base::StringValue file_system_path_value(file_system_path); |
- CallClientFunction("InspectorFrontendAPI.fileSystemRemoved", |
- &file_system_path_value, NULL, NULL); |
-} |
- |
-void DevToolsWindow::UpgradeDraggedFileSystemPermissions( |
- const std::string& file_system_url) { |
- CHECK(web_contents_->GetURL().SchemeIs(content::kChromeDevToolsScheme)); |
- file_helper_->UpgradeDraggedFileSystemPermissions( |
- file_system_url, |
- base::Bind(&DevToolsWindow::FileSystemAdded, weak_factory_.GetWeakPtr()), |
- base::Bind(&DevToolsWindow::ShowDevToolsConfirmInfoBar, |
- weak_factory_.GetWeakPtr())); |
-} |
- |
-void DevToolsWindow::IndexPath(int request_id, |
- const std::string& file_system_path) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- CHECK(web_contents_->GetURL().SchemeIs(content::kChromeDevToolsScheme)); |
- if (!file_helper_->IsFileSystemAdded(file_system_path)) { |
- IndexingDone(request_id, file_system_path); |
- return; |
- } |
- indexing_jobs_[request_id] = |
- scoped_refptr<DevToolsFileSystemIndexer::FileSystemIndexingJob>( |
- file_system_indexer_->IndexPath( |
- file_system_path, |
- Bind(&DevToolsWindow::IndexingTotalWorkCalculated, |
- weak_factory_.GetWeakPtr(), |
- request_id, |
- file_system_path), |
- Bind(&DevToolsWindow::IndexingWorked, |
- weak_factory_.GetWeakPtr(), |
- request_id, |
- file_system_path), |
- Bind(&DevToolsWindow::IndexingDone, |
- weak_factory_.GetWeakPtr(), |
- request_id, |
- file_system_path))); |
-} |
- |
-void DevToolsWindow::StopIndexing(int request_id) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- IndexingJobsMap::iterator it = indexing_jobs_.find(request_id); |
- if (it == indexing_jobs_.end()) |
- return; |
- it->second->Stop(); |
- indexing_jobs_.erase(it); |
-} |
- |
-void DevToolsWindow::SearchInPath(int request_id, |
- const std::string& file_system_path, |
- const std::string& query) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- CHECK(web_contents_->GetURL().SchemeIs(content::kChromeDevToolsScheme)); |
- if (!file_helper_->IsFileSystemAdded(file_system_path)) { |
- SearchCompleted(request_id, file_system_path, std::vector<std::string>()); |
- return; |
- } |
- file_system_indexer_->SearchInPath(file_system_path, |
- query, |
- Bind(&DevToolsWindow::SearchCompleted, |
- weak_factory_.GetWeakPtr(), |
- request_id, |
- file_system_path)); |
-} |
- |
-void DevToolsWindow::ZoomIn() { |
- chrome_page_zoom::Zoom(web_contents(), content::PAGE_ZOOM_IN); |
-} |
- |
-void DevToolsWindow::ZoomOut() { |
- chrome_page_zoom::Zoom(web_contents(), content::PAGE_ZOOM_OUT); |
-} |
- |
-void DevToolsWindow::ResetZoom() { |
- chrome_page_zoom::Zoom(web_contents(), content::PAGE_ZOOM_RESET); |
-} |
- |
-void DevToolsWindow::OpenUrlOnRemoteDeviceAndInspect( |
- const std::string& browser_id, |
- const std::string& url) { |
- if (remote_targets_handler_) |
- remote_targets_handler_->OpenAndInspect(browser_id, url, profile_); |
-} |
- |
-void DevToolsWindow::StartRemoteDevicesListener() { |
- remote_targets_handler_ = DevToolsRemoteTargetsUIHandler::CreateForAdb( |
- base::Bind(&DevToolsWindow::PopulateRemoteDevices, |
- base::Unretained(this)), |
- profile_); |
-} |
- |
-void DevToolsWindow::StopRemoteDevicesListener() { |
- remote_targets_handler_.reset(); |
-} |
- |
-void DevToolsWindow::EnableRemoteDeviceCounter(bool enable) { |
- DevToolsAndroidBridge* adb_bridge = |
- DevToolsAndroidBridge::Factory::GetForProfile(profile_); |
- if (!adb_bridge) |
- return; |
- |
- DCHECK(device_listener_enabled_ != enable); |
- device_listener_enabled_ = enable; |
- if (enable) |
- adb_bridge->AddDeviceCountListener(this); |
- else |
- adb_bridge->RemoveDeviceCountListener(this); |
-} |
- |
-void DevToolsWindow::DeviceCountChanged(int count) { |
- base::FundamentalValue value(count); |
- CallClientFunction( |
- "InspectorFrontendAPI.setRemoteDeviceCount", &value, NULL, NULL); |
-} |
- |
-void DevToolsWindow::PopulateRemoteDevices( |
- const std::string& source, |
- scoped_ptr<base::ListValue> targets) { |
- CallClientFunction( |
- "InspectorFrontendAPI.populateRemoteDevices", targets.get(), NULL, NULL); |
-} |
- |
-void DevToolsWindow::FileSavedAs(const std::string& url) { |
- base::StringValue url_value(url); |
- CallClientFunction("InspectorFrontendAPI.savedURL", &url_value, NULL, NULL); |
-} |
- |
-void DevToolsWindow::CanceledFileSaveAs(const std::string& url) { |
- base::StringValue url_value(url); |
- CallClientFunction("InspectorFrontendAPI.canceledSaveURL", |
- &url_value, NULL, NULL); |
-} |
- |
-void DevToolsWindow::AppendedTo(const std::string& url) { |
- base::StringValue url_value(url); |
- CallClientFunction("InspectorFrontendAPI.appendedToURL", &url_value, NULL, |
- NULL); |
-} |
- |
-void DevToolsWindow::FileSystemsLoaded( |
- const std::vector<DevToolsFileHelper::FileSystem>& file_systems) { |
- base::ListValue file_systems_value; |
- for (size_t i = 0; i < file_systems.size(); ++i) |
- file_systems_value.Append(CreateFileSystemValue(file_systems[i])); |
- CallClientFunction("InspectorFrontendAPI.fileSystemsLoaded", |
- &file_systems_value, NULL, NULL); |
-} |
- |
-void DevToolsWindow::FileSystemAdded( |
- const DevToolsFileHelper::FileSystem& file_system) { |
- scoped_ptr<base::StringValue> error_string_value( |
- new base::StringValue(std::string())); |
- scoped_ptr<base::DictionaryValue> file_system_value; |
- if (!file_system.file_system_path.empty()) |
- file_system_value.reset(CreateFileSystemValue(file_system)); |
- CallClientFunction("InspectorFrontendAPI.fileSystemAdded", |
- error_string_value.get(), file_system_value.get(), NULL); |
-} |
- |
-void DevToolsWindow::IndexingTotalWorkCalculated( |
- int request_id, |
- const std::string& file_system_path, |
- int total_work) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- base::FundamentalValue request_id_value(request_id); |
- base::StringValue file_system_path_value(file_system_path); |
- base::FundamentalValue total_work_value(total_work); |
- CallClientFunction("InspectorFrontendAPI.indexingTotalWorkCalculated", |
- &request_id_value, &file_system_path_value, |
- &total_work_value); |
-} |
- |
-void DevToolsWindow::IndexingWorked(int request_id, |
- const std::string& file_system_path, |
- int worked) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- base::FundamentalValue request_id_value(request_id); |
- base::StringValue file_system_path_value(file_system_path); |
- base::FundamentalValue worked_value(worked); |
- CallClientFunction("InspectorFrontendAPI.indexingWorked", &request_id_value, |
- &file_system_path_value, &worked_value); |
-} |
- |
-void DevToolsWindow::IndexingDone(int request_id, |
- const std::string& file_system_path) { |
- indexing_jobs_.erase(request_id); |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- base::FundamentalValue request_id_value(request_id); |
- base::StringValue file_system_path_value(file_system_path); |
- CallClientFunction("InspectorFrontendAPI.indexingDone", &request_id_value, |
- &file_system_path_value, NULL); |
-} |
- |
-void DevToolsWindow::SearchCompleted( |
- int request_id, |
- const std::string& file_system_path, |
- const std::vector<std::string>& file_paths) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- base::ListValue file_paths_value; |
- for (std::vector<std::string>::const_iterator it(file_paths.begin()); |
- it != file_paths.end(); ++it) { |
- file_paths_value.AppendString(*it); |
- } |
- base::FundamentalValue request_id_value(request_id); |
- base::StringValue file_system_path_value(file_system_path); |
- CallClientFunction("InspectorFrontendAPI.searchCompleted", &request_id_value, |
- &file_system_path_value, &file_paths_value); |
-} |
- |
-void DevToolsWindow::ShowDevToolsConfirmInfoBar( |
- const base::string16& message, |
- const InfoBarCallback& callback) { |
- DevToolsConfirmInfoBarDelegate::Create( |
- is_docked_ ? |
- InfoBarService::FromWebContents(GetInspectedWebContents()) : |
- InfoBarService::FromWebContents(web_contents_), |
- callback, message); |
+void DevToolsWindow::SetWhitelistedShortcuts( |
+ const std::string& message) { |
+ event_forwarder_->SetWhitelistedShortcuts(message); |
} |
void DevToolsWindow::CreateDevToolsBrowser() { |
std::string wp_key = GetDevToolsWindowPlacementPrefKey(); |
- PrefService* prefs = profile_->GetPrefs(); |
+ PrefService* prefs = profile()->GetPrefs(); |
const base::DictionaryValue* wp_pref = prefs->GetDictionary(wp_key.c_str()); |
if (!wp_pref || wp_pref->empty()) { |
DictionaryPrefUpdate update(prefs, wp_key.c_str()); |
@@ -1535,18 +1022,18 @@ void DevToolsWindow::CreateDevToolsBrowser() { |
} |
browser_ = new Browser(Browser::CreateParams::CreateForDevTools( |
- profile_, |
+ profile(), |
chrome::GetHostDesktopTypeForNativeView( |
- web_contents_->GetView()->GetNativeView()))); |
+ web_contents()->GetView()->GetNativeView()))); |
browser_->tab_strip_model()->AddWebContents( |
- web_contents_, -1, content::PAGE_TRANSITION_AUTO_TOPLEVEL, |
+ web_contents(), -1, content::PAGE_TRANSITION_AUTO_TOPLEVEL, |
TabStripModel::ADD_ACTIVE); |
- GetRenderViewHost()->SyncRendererPrefs(); |
+ web_contents()->GetRenderViewHost()->SyncRendererPrefs(); |
} |
// static |
bool DevToolsWindow::FindInspectedBrowserAndTabIndex( |
- content::WebContents* inspected_web_contents, Browser** browser, int* tab) { |
+ WebContents* inspected_web_contents, Browser** browser, int* tab) { |
if (!inspected_web_contents) |
return false; |
@@ -1606,20 +1093,8 @@ void DevToolsWindow::DoAction(const DevToolsToggleAction& action) { |
} |
} |
-void DevToolsWindow::UpdateTheme() { |
- ThemeService* tp = ThemeServiceFactory::GetForProfile(profile_); |
- DCHECK(tp); |
- |
- std::string command("InspectorFrontendAPI.setToolbarColors(\"" + |
- SkColorToRGBAString(tp->GetColor(ThemeProperties::COLOR_TOOLBAR)) + |
- "\", \"" + |
- SkColorToRGBAString(tp->GetColor(ThemeProperties::COLOR_BOOKMARK_TEXT)) + |
- "\")"); |
- web_contents_->GetMainFrame()->ExecuteJavaScript(base::ASCIIToUTF16(command)); |
-} |
- |
void DevToolsWindow::AddDevToolsExtensionsToClient() { |
- content::WebContents* inspected_web_contents = GetInspectedWebContents(); |
+ WebContents* inspected_web_contents = GetInspectedWebContents(); |
if (inspected_web_contents) { |
SessionTabHelper* session_tab_helper = |
SessionTabHelper::FromWebContents(inspected_web_contents); |
@@ -1628,56 +1103,7 @@ void DevToolsWindow::AddDevToolsExtensionsToClient() { |
CallClientFunction("WebInspector.setInspectedTabId", &tabId, NULL, NULL); |
} |
} |
- |
- Profile* profile = |
- Profile::FromBrowserContext(web_contents_->GetBrowserContext()); |
- const ExtensionService* extension_service = extensions::ExtensionSystem::Get( |
- profile->GetOriginalProfile())->extension_service(); |
- if (!extension_service) |
- return; |
- const extensions::ExtensionSet* extensions = extension_service->extensions(); |
- |
- base::ListValue results; |
- for (extensions::ExtensionSet::const_iterator extension(extensions->begin()); |
- extension != extensions->end(); ++extension) { |
- if (extensions::ManifestURL::GetDevToolsPage(extension->get()).is_empty()) |
- continue; |
- base::DictionaryValue* extension_info = new base::DictionaryValue(); |
- extension_info->Set( |
- "startPage", |
- new base::StringValue( |
- extensions::ManifestURL::GetDevToolsPage(extension->get()).spec())); |
- extension_info->Set("name", new base::StringValue((*extension)->name())); |
- extension_info->Set( |
- "exposeExperimentalAPIs", |
- new base::FundamentalValue((*extension)->HasAPIPermission( |
- extensions::APIPermission::kExperimental))); |
- results.Append(extension_info); |
- } |
- CallClientFunction("WebInspector.addExtensions", &results, NULL, NULL); |
-} |
- |
-void DevToolsWindow::CallClientFunction(const std::string& function_name, |
- const base::Value* arg1, |
- const base::Value* arg2, |
- const base::Value* arg3) { |
- std::string params; |
- if (arg1) { |
- std::string json; |
- base::JSONWriter::Write(arg1, &json); |
- params.append(json); |
- if (arg2) { |
- base::JSONWriter::Write(arg2, &json); |
- params.append(", " + json); |
- if (arg3) { |
- base::JSONWriter::Write(arg3, &json); |
- params.append(", " + json); |
- } |
- } |
- } |
- base::string16 javascript = |
- base::UTF8ToUTF16(function_name + "(" + params + ");"); |
- web_contents_->GetMainFrame()->ExecuteJavaScript(javascript); |
+ DevToolsWindowBase::AddDevToolsExtensionsToClient(); |
} |
void DevToolsWindow::UpdateBrowserToolbar() { |
@@ -1686,12 +1112,13 @@ void DevToolsWindow::UpdateBrowserToolbar() { |
inspected_window->UpdateToolbar(NULL); |
} |
-content::WebContents* DevToolsWindow::GetInspectedWebContents() { |
+WebContents* DevToolsWindow::GetInspectedWebContents() { |
return inspected_contents_observer_ ? |
inspected_contents_observer_->web_contents() : NULL; |
} |
void DevToolsWindow::DocumentOnLoadCompletedInMainFrame() { |
+ DevToolsWindowBase::DocumentOnLoadCompletedInMainFrame(); |
// We could be in kLoadCompleted state already if frontend reloads itself. |
if (load_state_ != kLoadCompleted) { |
// Load is completed when both kIsDockedSet and kOnLoadFired happened. |
@@ -1705,8 +1132,6 @@ void DevToolsWindow::DocumentOnLoadCompletedInMainFrame() { |
void DevToolsWindow::LoadCompleted() { |
Show(action_on_load_); |
action_on_load_ = DevToolsToggleAction::NoOp(); |
- UpdateTheme(); |
- AddDevToolsExtensionsToClient(); |
if (!load_completed_callback_.is_null()) { |
load_completed_callback_.Run(); |
load_completed_callback_ = base::Closure(); |
@@ -1722,11 +1147,6 @@ void DevToolsWindow::SetLoadCompletedCallback(const base::Closure& closure) { |
load_completed_callback_ = closure; |
} |
-void DevToolsWindow::SetWhitelistedShortcuts( |
- const std::string& message) { |
- event_forwarder_->SetWhitelistedShortcuts(message); |
-} |
- |
bool DevToolsWindow::ForwardKeyboardEvent( |
const content::NativeWebKeyboardEvent& event) { |
return event_forwarder_->ForwardEvent(event); |