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

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

Issue 108213012: [DevTools] Remove dock side knowledge from browser. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/devtools/devtools_window.h
diff --git a/chrome/browser/devtools/devtools_window.h b/chrome/browser/devtools/devtools_window.h
index 53a0ccf43ca612b5bf14389d367d3c5ee6bd9605..977c7e9213ecd85e9098a811133deb452c586be1 100644
--- a/chrome/browser/devtools/devtools_window.h
+++ b/chrome/browser/devtools/devtools_window.h
@@ -49,13 +49,6 @@ namespace user_prefs {
class PrefRegistrySyncable;
}
-enum DevToolsDockSide {
- DEVTOOLS_DOCK_SIDE_UNDOCKED = 0,
- DEVTOOLS_DOCK_SIDE_BOTTOM,
- DEVTOOLS_DOCK_SIDE_RIGHT,
- DEVTOOLS_DOCK_SIDE_MINIMIZED
-};
-
class DevToolsWindow : private content::NotificationObserver,
private content::WebContentsDelegate,
private content::DevToolsFrontendHostDelegate,
@@ -69,31 +62,42 @@ class DevToolsWindow : private content::NotificationObserver,
static std::string GetDevToolsWindowPlacementPrefKey();
static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry);
+
// Return the DevToolsWindow for the given RenderViewHost if one exists,
// otherwise NULL.
static DevToolsWindow* GetInstanceForInspectedRenderViewHost(
content::RenderViewHost* inspected_rvh);
+
+ // Return the DevToolsWindow for the given WebContents if one exists and is
+ // docked, otherwise NULL.
static DevToolsWindow* GetDockedInstanceForInspectedTab(
content::WebContents* inspected_tab);
+
static bool IsDevToolsWindow(content::RenderViewHost* window_rvh);
+
static DevToolsWindow* OpenDevToolsWindowForWorker(
Profile* profile,
content::DevToolsAgentHost* worker_agent);
- static DevToolsWindow* CreateDevToolsWindowForWorker(Profile* profile);
+
+ // Open or focus existing DevTools window, and perform the specified action.
+ static DevToolsWindow* OpenDevToolsWindow(
+ content::RenderViewHost* inspected_rvh,
+ const DevToolsToggleAction& action);
+
+ // Open or focus existing DevTools window, with no special action.
static DevToolsWindow* OpenDevToolsWindow(
content::RenderViewHost* inspected_rvh);
+
+ // Perform specified action for current WebContents inside a |browser|.
+ // This may close currently open DevTools window.
static DevToolsWindow* ToggleDevToolsWindow(
Browser* browser,
const DevToolsToggleAction& action);
- static void OpenExternalFrontend(Profile* profile,
- const std::string& frontend_uri,
- content::DevToolsAgentHost* agent_host);
- // Exposed for testing, normal clients should not use this method.
- static DevToolsWindow* ToggleDevToolsWindow(
- content::RenderViewHost* inspected_rvh,
- bool force_open,
- const DevToolsToggleAction& action);
+ static void OpenExternalFrontend(
+ Profile* profile,
+ const std::string& frontend_uri,
+ content::DevToolsAgentHost* agent_host);
static void InspectElement(
content::RenderViewHost* inspected_rvh, int x, int y);
@@ -105,10 +109,8 @@ class DevToolsWindow : private content::NotificationObserver,
content::WebContents* web_contents() { return web_contents_; }
Browser* browser() { return browser_; } // For tests.
- DevToolsDockSide dock_side() const { return dock_side_; }
content::RenderViewHost* GetRenderViewHost();
- content::DevToolsClientHost* GetDevToolsClientHostForTest();
// Inspected WebContents is placed over DevTools WebContents in docked mode.
// The following methods return the insets of inspected WebContents
@@ -119,8 +121,6 @@ class DevToolsWindow : private content::NotificationObserver,
// the overlaying inspected WebContents size.
gfx::Size GetMinimumSize() const;
- void Show(const DevToolsToggleAction& action);
-
// BeforeUnload interception ////////////////////////////////////////////////
// In order to preserve any edits the user may have made in devtools, the
@@ -195,37 +195,50 @@ class DevToolsWindow : private content::NotificationObserver,
// by user.
static void OnPageCloseCanceled(content::WebContents* contents);
- void SetDockSideForTest(DevToolsDockSide dock_side);
+ void SetIsDockedForTest(bool is_docked);
+
+ // Use with care. DevTools frontend page may be disfunctional after this call.
+ void SetIsDockedAndShowImmediatelyForTest(bool is_docked);
private:
friend class DevToolsControllerTest;
+ friend class DevToolsSanityTest;
friend class BrowserWindowControllerTest;
+ enum LoadState {
+ kNotLoaded = 0,
+ kOnLoadFired = 1 << 0,
+ kIsDockedSet = 1 << 1,
+ kLoadCompleted = kOnLoadFired | kIsDockedSet
+ };
+ typedef int LoadStateMask;
+
DevToolsWindow(Profile* profile,
const GURL& frontend_url,
content::RenderViewHost* inspected_rvh,
- DevToolsDockSide dock_side);
+ bool can_dock);
static DevToolsWindow* Create(Profile* profile,
const GURL& frontend_url,
content::RenderViewHost* inspected_rvh,
- DevToolsDockSide dock_side,
bool shared_worker_frontend,
bool external_frontend,
bool can_dock);
static GURL GetDevToolsURL(Profile* profile,
const GURL& base_url,
- DevToolsDockSide dock_side,
bool shared_worker_frontend,
bool external_frontend,
bool can_dock);
static DevToolsWindow* FindDevToolsWindow(content::DevToolsAgentHost*);
static DevToolsWindow* AsDevToolsWindow(content::RenderViewHost*);
- static DevToolsDockSide GetDockSideFromPrefs(Profile* profile);
- static std::string SideToString(DevToolsDockSide dock_side);
- static DevToolsDockSide SideFromString(const std::string& dock_side);
+ static DevToolsWindow* CreateDevToolsWindowForWorker(Profile* profile);
+ static bool IsDockedFromString(const std::string& dock_side);
static bool FindInspectedBrowserAndTabIndex(
content::WebContents* inspected_web_contents, Browser**, int* tab);
+ static DevToolsWindow* ToggleDevToolsWindow(
+ content::RenderViewHost* inspected_rvh,
+ bool force_open,
+ const DevToolsToggleAction& action);
// content::NotificationObserver:
virtual void Observe(int type,
@@ -275,6 +288,7 @@ class DevToolsWindow : private content::NotificationObserver,
int left, int top, int right, int bottom) OVERRIDE;
virtual void MoveWindow(int x, int y) OVERRIDE;
virtual void SetDockSide(const std::string& side) OVERRIDE;
+ virtual void SetIsDocked(bool is_docked) OVERRIDE;
virtual void OpenInNewTab(const std::string& url) OVERRIDE;
virtual void SaveToFile(const std::string& url,
const std::string& content,
@@ -315,10 +329,10 @@ class DevToolsWindow : private content::NotificationObserver,
void CreateDevToolsBrowser();
BrowserWindow* GetInspectedBrowserWindow();
- bool IsInspectedBrowserPopup();
- void UpdateFrontendDockSide();
- void ScheduleAction(const DevToolsToggleAction& action);
- void DoAction();
+ void ScheduleShow(const DevToolsToggleAction& action);
+ void Show(const DevToolsToggleAction& action);
+ void DoAction(const DevToolsToggleAction& action);
+ void LoadCompleted();
void UpdateTheme();
void AddDevToolsExtensionsToClient();
void CallClientFunction(const std::string& function_name,
@@ -326,8 +340,6 @@ class DevToolsWindow : private content::NotificationObserver,
const base::Value* arg2,
const base::Value* arg3);
void UpdateBrowserToolbar();
- bool IsDocked();
- void Restore();
content::WebContents* GetInspectedWebContents();
void DocumentOnLoadCompletedInMainFrame();
@@ -340,10 +352,11 @@ class DevToolsWindow : private content::NotificationObserver,
Profile* profile_;
content::WebContents* web_contents_;
Browser* browser_;
- // TODO(dgozman): move dock side knowledge entirely to frontend.
- DevToolsDockSide dock_side_;
- bool is_loaded_;
+ bool is_docked_;
+ bool can_dock_;
+ LoadStateMask load_state_mask_;
DevToolsToggleAction action_on_load_;
+ bool set_is_docked_for_test_on_load_;
content::NotificationRegistrar registrar_;
scoped_ptr<content::DevToolsClientHost> frontend_host_;
scoped_ptr<DevToolsFileHelper> file_helper_;
@@ -354,7 +367,6 @@ class DevToolsWindow : private content::NotificationObserver,
IndexingJobsMap;
IndexingJobsMap indexing_jobs_;
gfx::Insets contents_insets_;
- DevToolsDockSide dock_side_before_minimized_;
// True if we're in the process of handling a beforeunload event originating
// from the inspected webcontents, see InterceptPageBeforeUnload for details.
bool intercepted_page_beforeunload_;

Powered by Google App Engine
This is Rietveld 408576698