diff options
author | dgozman@chromium.org <dgozman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-04 14:58:22 +0000 |
---|---|---|
committer | dgozman@chromium.org <dgozman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-04 14:58:22 +0000 |
commit | a131afc860e6d841a100878eca59835a751c97c4 (patch) | |
tree | 3f63853ed43b651a31f146d0a0efdc173bfa5be2 | |
parent | a76945c1bc3d4e46ca066d88c2c092b8b6925ff6 (diff) | |
download | chromium_src-a131afc860e6d841a100878eca59835a751c97c4.zip chromium_src-a131afc860e6d841a100878eca59835a751c97c4.tar.gz chromium_src-a131afc860e6d841a100878eca59835a751c97c4.tar.bz2 |
[DevTools] Added ChangeAttachedWindowHeight method to allow DevTools to change it's window height from inside.
BUG=171410
TEST=manual.
Review URL: https://chromiumcodereview.appspot.com/12049014
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@180406 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/devtools/devtools_window.cc | 11 | ||||
-rw-r--r-- | chrome/browser/devtools/devtools_window.h | 1 | ||||
-rw-r--r-- | chrome/browser/ui/cocoa/dev_tools_controller.mm | 2 | ||||
-rw-r--r-- | chrome/browser/ui/gtk/browser_window_gtk.cc | 12 | ||||
-rw-r--r-- | chrome/browser/ui/views/frame/browser_view.cc | 7 | ||||
-rw-r--r-- | content/browser/devtools/devtools_frontend_host.cc | 6 | ||||
-rw-r--r-- | content/browser/devtools/devtools_frontend_host.h | 1 | ||||
-rw-r--r-- | content/common/devtools_messages.h | 4 | ||||
-rw-r--r-- | content/public/browser/devtools_frontend_host_delegate.h | 5 | ||||
-rw-r--r-- | content/renderer/devtools/devtools_client.cc | 4 | ||||
-rw-r--r-- | content/renderer/devtools/devtools_client.h | 1 | ||||
-rw-r--r-- | content/shell/shell_devtools_frontend.h | 1 | ||||
-rw-r--r-- | ui/views/controls/single_split_view.cc | 9 | ||||
-rw-r--r-- | ui/views/controls/single_split_view.h | 2 |
14 files changed, 58 insertions, 8 deletions
diff --git a/chrome/browser/devtools/devtools_window.cc b/chrome/browser/devtools/devtools_window.cc index cc00eff..4878323 100644 --- a/chrome/browser/devtools/devtools_window.cc +++ b/chrome/browser/devtools/devtools_window.cc @@ -753,6 +753,17 @@ void DevToolsWindow::ActivateWindow() { } } +void DevToolsWindow::ChangeAttachedWindowHeight(unsigned height) { + if (dock_side_ != DEVTOOLS_DOCK_SIDE_BOTTOM) + return; + + SetHeight(height); + // Update inspected window to adjust heights. + BrowserWindow* inspected_window = GetInspectedBrowserWindow(); + if (inspected_window) + inspected_window->UpdateDevTools(); +} + void DevToolsWindow::CloseWindow() { DCHECK(IsDocked()); DevToolsManager::GetInstance()->ClientHostClosing(frontend_host_.get()); diff --git a/chrome/browser/devtools/devtools_window.h b/chrome/browser/devtools/devtools_window.h index fbe75a9..1ec0e5c 100644 --- a/chrome/browser/devtools/devtools_window.h +++ b/chrome/browser/devtools/devtools_window.h @@ -175,6 +175,7 @@ class DevToolsWindow : private content::NotificationObserver, // content::DevToolsFrontendHostDelegate overrides. virtual void ActivateWindow() OVERRIDE; + virtual void ChangeAttachedWindowHeight(unsigned height) OVERRIDE; virtual void CloseWindow() OVERRIDE; virtual void MoveWindow(int x, int y) OVERRIDE; virtual void SetDockSide(const std::string& side) OVERRIDE; diff --git a/chrome/browser/ui/cocoa/dev_tools_controller.mm b/chrome/browser/ui/cocoa/dev_tools_controller.mm index bcd6b59..a392e54 100644 --- a/chrome/browser/ui/cocoa/dev_tools_controller.mm +++ b/chrome/browser/ui/cocoa/dev_tools_controller.mm @@ -90,6 +90,8 @@ using content::WebContents; if (devToolsWindow_ == newDevToolsWindow) { if (!newDevToolsWindow || (newDevToolsWindow->dock_side() == dockSide_)) { + if (newDevToolsWindow) + [self updateDevToolsSplitPosition]; return; } } diff --git a/chrome/browser/ui/gtk/browser_window_gtk.cc b/chrome/browser/ui/gtk/browser_window_gtk.cc index 378cab1..93300ac 100644 --- a/chrome/browser/ui/gtk/browser_window_gtk.cc +++ b/chrome/browser/ui/gtk/browser_window_gtk.cc @@ -2287,8 +2287,11 @@ void BrowserWindowGtk::UpdateDevToolsForContents(WebContents* contents) { // Fast return in case of the same window having same orientation. if (devtools_window_ == new_devtools_window && (!new_devtools_window || - new_devtools_window->dock_side() == devtools_dock_side_)) + new_devtools_window->dock_side() == devtools_dock_side_)) { + if (new_devtools_window) + UpdateDevToolsSplitPosition(); return; + } // Replace tab contents. if (devtools_window_ != new_devtools_window) { @@ -2361,14 +2364,17 @@ void BrowserWindowGtk::UpdateDevToolsSplitPosition() { return; GtkAllocation contents_rect; gtk_widget_get_allocation(contents_vsplit_, &contents_rect); + int split_size; if (devtools_window_->dock_side() == DEVTOOLS_DOCK_SIDE_RIGHT) { + gtk_widget_style_get(contents_hsplit_, "handle-size", &split_size, NULL); int split_offset = contents_rect.width - - devtools_window_->GetWidth(contents_rect.width); + devtools_window_->GetWidth(contents_rect.width) - split_size; gtk_paned_set_position(GTK_PANED(contents_hsplit_), split_offset); } else { + gtk_widget_style_get(contents_vsplit_, "handle-size", &split_size, NULL); int split_offset = contents_rect.height - - devtools_window_->GetHeight(contents_rect.height); + devtools_window_->GetHeight(contents_rect.height) - split_size; gtk_paned_set_position(GTK_PANED(contents_vsplit_), split_offset); } } diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc index 3b3fa64..1ffc5be 100644 --- a/chrome/browser/ui/views/frame/browser_view.cc +++ b/chrome/browser/ui/views/frame/browser_view.cc @@ -2094,6 +2094,8 @@ void BrowserView::UpdateDevToolsForContents(WebContents* web_contents) { if (devtools_window_ == new_devtools_window) { if (!new_devtools_window || (new_devtools_window->dock_side() == devtools_dock_side_)) { + if (new_devtools_window) + UpdateDevToolsSplitPosition(); return; } } @@ -2163,12 +2165,13 @@ void BrowserView::HideDevToolsContainer() { } void BrowserView::UpdateDevToolsSplitPosition() { + int split_size = contents_split_->GetDividerSize(); if (devtools_window_->dock_side() == DEVTOOLS_DOCK_SIDE_RIGHT) { - int split_offset = contents_split_->width() - + int split_offset = contents_split_->width() - (split_size / 2) - devtools_window_->GetWidth(contents_split_->width()); contents_split_->set_divider_offset(split_offset); } else { - int split_offset = contents_split_->height() - + int split_offset = contents_split_->height() - (split_size / 2) - devtools_window_->GetHeight(contents_split_->height()); contents_split_->set_divider_offset(split_offset); } diff --git a/content/browser/devtools/devtools_frontend_host.cc b/content/browser/devtools/devtools_frontend_host.cc index 4e8966b..754cc27 100644 --- a/content/browser/devtools/devtools_frontend_host.cc +++ b/content/browser/devtools/devtools_frontend_host.cc @@ -62,6 +62,8 @@ bool DevToolsFrontendHost::OnMessageReceived( IPC_MESSAGE_HANDLER(DevToolsAgentMsg_DispatchOnInspectorBackend, OnDispatchOnInspectorBackend) IPC_MESSAGE_HANDLER(DevToolsHostMsg_ActivateWindow, OnActivateWindow) + IPC_MESSAGE_HANDLER(DevToolsHostMsg_ChangeAttachedWindowHeight, + OnChangeAttachedWindowHeight) IPC_MESSAGE_HANDLER(DevToolsHostMsg_CloseWindow, OnCloseWindow) IPC_MESSAGE_HANDLER(DevToolsHostMsg_MoveWindow, OnMoveWindow) IPC_MESSAGE_HANDLER(DevToolsHostMsg_RequestSetDockSide, @@ -88,6 +90,10 @@ void DevToolsFrontendHost::OnActivateWindow() { delegate_->ActivateWindow(); } +void DevToolsFrontendHost::OnChangeAttachedWindowHeight(unsigned height) { + delegate_->ChangeAttachedWindowHeight(height); +} + void DevToolsFrontendHost::OnCloseWindow() { delegate_->CloseWindow(); } diff --git a/content/browser/devtools/devtools_frontend_host.h b/content/browser/devtools/devtools_frontend_host.h index 87c6924..5c4924d 100644 --- a/content/browser/devtools/devtools_frontend_host.h +++ b/content/browser/devtools/devtools_frontend_host.h @@ -40,6 +40,7 @@ class DevToolsFrontendHost : public DevToolsClientHost, void OnDispatchOnInspectorBackend(const std::string& message); void OnActivateWindow(); + void OnChangeAttachedWindowHeight(unsigned height); void OnCloseWindow(); void OnMoveWindow(int x, int y); void OnRequestSetDockSide(const std::string& side); diff --git a/content/common/devtools_messages.h b/content/common/devtools_messages.h index 8033300..84a4686 100644 --- a/content/common/devtools_messages.h +++ b/content/common/devtools_messages.h @@ -110,6 +110,10 @@ IPC_MESSAGE_ROUTED0(DevToolsMsg_SetupDevToolsClient) // Activates (brings to the front) corresponding dev tools window. IPC_MESSAGE_ROUTED0(DevToolsHostMsg_ActivateWindow) +// Sets the height of corresponding dev tools window. +IPC_MESSAGE_ROUTED1(DevToolsHostMsg_ChangeAttachedWindowHeight, + unsigned /* height */) + // Closes dev tools window that is inspecting current render_view_host. IPC_MESSAGE_ROUTED0(DevToolsHostMsg_CloseWindow) diff --git a/content/public/browser/devtools_frontend_host_delegate.h b/content/public/browser/devtools_frontend_host_delegate.h index b0617d2..22bdcc3 100644 --- a/content/public/browser/devtools_frontend_host_delegate.h +++ b/content/public/browser/devtools_frontend_host_delegate.h @@ -19,10 +19,13 @@ class DevToolsFrontendHostDelegate { // Should bring DevTools window to front. virtual void ActivateWindow() = 0; + // Changes the height of attached DevTools window. + virtual void ChangeAttachedWindowHeight(unsigned height) = 0; + // Closes DevTools front-end window. virtual void CloseWindow() = 0; - // Moves DevTols front-end windo. + // Moves DevTools front-end window. virtual void MoveWindow(int x, int y) = 0; // Specifies side for devtools to dock to. diff --git a/content/renderer/devtools/devtools_client.cc b/content/renderer/devtools/devtools_client.cc index eda56f8..7ec522c 100644 --- a/content/renderer/devtools/devtools_client.cc +++ b/content/renderer/devtools/devtools_client.cc @@ -62,6 +62,10 @@ void DevToolsClient::activateWindow() { Send(new DevToolsHostMsg_ActivateWindow(routing_id())); } +void DevToolsClient::changeAttachedWindowHeight(unsigned height) { + Send(new DevToolsHostMsg_ChangeAttachedWindowHeight(routing_id(), height)); +} + void DevToolsClient::closeWindow() { Send(new DevToolsHostMsg_CloseWindow(routing_id())); } diff --git a/content/renderer/devtools/devtools_client.h b/content/renderer/devtools/devtools_client.h index d2363b4..d2fe7ec 100644 --- a/content/renderer/devtools/devtools_client.h +++ b/content/renderer/devtools/devtools_client.h @@ -43,6 +43,7 @@ class CONTENT_EXPORT DevToolsClient virtual void sendMessageToBackend(const WebKit::WebString&) OVERRIDE; virtual void activateWindow() OVERRIDE; + virtual void changeAttachedWindowHeight(unsigned height) OVERRIDE; virtual void closeWindow() OVERRIDE; virtual void moveWindowBy(const WebKit::WebFloatPoint& offset) OVERRIDE; virtual void requestSetDockSide(const WebKit::WebString& side) OVERRIDE; diff --git a/content/shell/shell_devtools_frontend.h b/content/shell/shell_devtools_frontend.h index ca1cae7..2308aa3 100644 --- a/content/shell/shell_devtools_frontend.h +++ b/content/shell/shell_devtools_frontend.h @@ -37,6 +37,7 @@ class ShellDevToolsFrontend : public WebContentsObserver, // DevToolsFrontendHostDelegate implementation virtual void ActivateWindow() OVERRIDE {} + virtual void ChangeAttachedWindowHeight(unsigned height) OVERRIDE {} virtual void CloseWindow() OVERRIDE {} virtual void MoveWindow(int x, int y) OVERRIDE {} virtual void SetDockSide(const std::string& side) OVERRIDE {} diff --git a/ui/views/controls/single_split_view.cc b/ui/views/controls/single_split_view.cc index 33a03bd..2634d14 100644 --- a/ui/views/controls/single_split_view.cc +++ b/ui/views/controls/single_split_view.cc @@ -103,6 +103,12 @@ gfx::NativeCursor SingleSplitView::GetCursor(const ui::MouseEvent& event) { #endif } +int SingleSplitView::GetDividerSize() const { + bool both_visible = child_count() > 1 && child_at(0)->visible() && + child_at(1)->visible(); + return both_visible ? kDividerSize : 0; +} + void SingleSplitView::CalculateChildrenBounds( const gfx::Rect& bounds, gfx::Rect* leading_bounds, @@ -128,8 +134,7 @@ void SingleSplitView::CalculateChildrenBounds( divider_at = NormalizeDividerOffset(divider_at, bounds); } - int divider_size = - !is_leading_visible || !is_trailing_visible ? 0 : kDividerSize; + int divider_size = GetDividerSize(); if (is_horizontal_) { *leading_bounds = gfx::Rect(0, 0, divider_at, bounds.height()); diff --git a/ui/views/controls/single_split_view.h b/ui/views/controls/single_split_view.h index ccb3195..e9cfc6d 100644 --- a/ui/views/controls/single_split_view.h +++ b/ui/views/controls/single_split_view.h @@ -56,6 +56,8 @@ class VIEWS_EXPORT SingleSplitView : public View { } int divider_offset() const { return divider_offset_; } + int GetDividerSize() const; + // Sets whether the leading component is resized when the split views size // changes. The default is true. A value of false results in the trailing // component resizing on a bounds change. |