summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordgozman@chromium.org <dgozman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-04 14:58:22 +0000
committerdgozman@chromium.org <dgozman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-04 14:58:22 +0000
commita131afc860e6d841a100878eca59835a751c97c4 (patch)
tree3f63853ed43b651a31f146d0a0efdc173bfa5be2
parenta76945c1bc3d4e46ca066d88c2c092b8b6925ff6 (diff)
downloadchromium_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.cc11
-rw-r--r--chrome/browser/devtools/devtools_window.h1
-rw-r--r--chrome/browser/ui/cocoa/dev_tools_controller.mm2
-rw-r--r--chrome/browser/ui/gtk/browser_window_gtk.cc12
-rw-r--r--chrome/browser/ui/views/frame/browser_view.cc7
-rw-r--r--content/browser/devtools/devtools_frontend_host.cc6
-rw-r--r--content/browser/devtools/devtools_frontend_host.h1
-rw-r--r--content/common/devtools_messages.h4
-rw-r--r--content/public/browser/devtools_frontend_host_delegate.h5
-rw-r--r--content/renderer/devtools/devtools_client.cc4
-rw-r--r--content/renderer/devtools/devtools_client.h1
-rw-r--r--content/shell/shell_devtools_frontend.h1
-rw-r--r--ui/views/controls/single_split_view.cc9
-rw-r--r--ui/views/controls/single_split_view.h2
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.