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