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

Unified Diff: ash/wm/dock/docked_window_layout_manager.cc

Issue 45343003: UMA data collection for docked windows (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: UMA data collection for docked windows Created 7 years, 2 months 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: ash/wm/dock/docked_window_layout_manager.cc
diff --git a/ash/wm/dock/docked_window_layout_manager.cc b/ash/wm/dock/docked_window_layout_manager.cc
index 8b64ffb4a20e3a06f03390a3dbbf1fdeacec5d31..786c5e5b2666ed2ae3c3f2f0e73156c63245a4c8 100644
--- a/ash/wm/dock/docked_window_layout_manager.cc
+++ b/ash/wm/dock/docked_window_layout_manager.cc
@@ -20,6 +20,7 @@
#include "ash/wm/workspace_controller.h"
#include "base/auto_reset.h"
#include "base/command_line.h"
+#include "base/metrics/histogram.h"
#include "third_party/skia/include/core/SkColor.h"
#include "ui/aura/client/activation_client.h"
#include "ui/aura/client/focus_client.h"
@@ -248,6 +249,7 @@ DockedWindowLayoutManager::DockedWindowLayoutManager(
docked_width_(0),
alignment_(DOCKED_ALIGNMENT_NONE),
last_active_window_(NULL),
+ previous_docked_windows_(0),
background_widget_(new DockedBackgroundWidget(dock_container_)) {
DCHECK(dock_container);
aura::client::GetActivationClient(Shell::GetPrimaryRootWindow())->
@@ -464,7 +466,10 @@ void DockedWindowLayoutManager::OnWindowRemovedFromLayout(aura::Window* child) {
// If this is the last window, set alignment and maximize the workspace.
if (!IsAnyWindowDocked()) {
alignment_ = DOCKED_ALIGNMENT_NONE;
+ int previous_docked_width = docked_width_;
docked_width_ = 0;
+ if (docked_width_ != previous_docked_width)
+ UMA_HISTOGRAM_CUSTOM_COUNTS("Ash.Dock.Width", docked_width_, 0, 360, 72);
flackr 2013/10/29 21:33:49 Create a common method for updating and/or trackin
varkha 2013/10/30 19:21:00 Done.
}
if (last_active_window_ == child)
last_active_window_ = NULL;
@@ -577,6 +582,8 @@ void DockedWindowLayoutManager::OnWindowShowTypeChanged(
// Reparenting changes the source bounds for the animation if a window is
// visible so hide it here and show later when it is already in the desktop.
UndockWindow(window);
+ UMA_HISTOGRAM_ENUMERATION("Ash.Dock.Actions",
+ DOCKED_ACTION_MAXIMIZE, DOCKED_ACTION_COUNT);
} else {
RestoreDockedWindow(window_state);
}
@@ -615,6 +622,8 @@ void DockedWindowLayoutManager::OnWindowDestroying(aura::Window* window) {
}
if (window == last_active_window_)
last_active_window_ = NULL;
+ UMA_HISTOGRAM_ENUMERATION("Ash.Dock.Actions",
+ DOCKED_ACTION_CLOSE, DOCKED_ACTION_COUNT);
}
@@ -652,16 +661,22 @@ void DockedWindowLayoutManager::MaybeMinimizeChildrenExcept(
// Use a copy of children array because a call to Minimize can change order.
aura::Window::Windows children(dock_container_->children());
aura::Window::Windows::const_reverse_iterator iter = children.rbegin();
+ int docked_windows = child ? 1 : 0;
while (iter != children.rend()) {
aura::Window* window(*iter++);
if (window == child || !IsUsedByLayout(window))
continue;
int room_needed = GetWindowHeightCloseTo(window, 0) + kMinDockGap;
- if (available_room > room_needed)
+ if (available_room > room_needed) {
available_room -= room_needed;
- else
- wm::GetWindowState(window)->Minimize();
+ docked_windows++;
+ continue;
+ }
+ wm::GetWindowState(window)->Minimize();
}
+ if (docked_windows != previous_docked_windows_)
+ UMA_HISTOGRAM_COUNTS_100("Ash.Dock.Items", docked_windows);
flackr 2013/10/29 21:33:49 MaybeMinimizeChildrenExcept is only called from Re
varkha 2013/10/30 19:21:00 MaybeMinimizeChildrenExcept is called from FinishD
+ previous_docked_windows_ = docked_windows;
}
void DockedWindowLayoutManager::MinimizeDockedWindow(
@@ -670,6 +685,8 @@ void DockedWindowLayoutManager::MinimizeDockedWindow(
window_state->window()->Hide();
if (window_state->IsActive())
window_state->Deactivate();
+ UMA_HISTOGRAM_ENUMERATION("Ash.Dock.Actions",
+ DOCKED_ACTION_MINIMIZE, DOCKED_ACTION_COUNT);
}
void DockedWindowLayoutManager::RestoreDockedWindow(
@@ -686,6 +703,8 @@ void DockedWindowLayoutManager::RestoreDockedWindow(
// Evict the window if it can no longer be docked because of its height.
if (!CanDockWindow(window, SNAP_NONE)) {
UndockWindow(window);
+ UMA_HISTOGRAM_ENUMERATION("Ash.Dock.Actions",
+ DOCKED_ACTION_EVICT, DOCKED_ACTION_COUNT);
return;
}
gfx::Rect bounds(window->bounds());
@@ -693,6 +712,8 @@ void DockedWindowLayoutManager::RestoreDockedWindow(
window->SetBounds(bounds);
window->Show();
MaybeMinimizeChildrenExcept(window);
+ UMA_HISTOGRAM_ENUMERATION("Ash.Dock.Actions",
+ DOCKED_ACTION_RESTORE, DOCKED_ACTION_COUNT);
}
void DockedWindowLayoutManager::OnDraggedWindowDocked(aura::Window* window) {
@@ -849,13 +870,15 @@ void DockedWindowLayoutManager::FanOutChildren(
// Docked area is shown only if there is at least one non-dragged visible
// docked window.
+ int previous_docked_width = docked_width_;
docked_width_ = ideal_docked_width;
if (visible_windows->empty() ||
(visible_windows->size() == 1 &&
(*visible_windows)[0].window() == dragged_window_)) {
docked_width_ = 0;
}
-
+ if (docked_width_ != previous_docked_width)
+ UMA_HISTOGRAM_CUSTOM_COUNTS("Ash.Dock.Width", docked_width_, 0, 360, 72);
flackr 2013/10/29 21:33:49 It might be worth setting a higher max in case we
varkha 2013/10/30 19:21:00 Done.
// Sort windows by their center positions and fan out overlapping
// windows.
std::sort(visible_windows->begin(), visible_windows->end(),

Powered by Google App Engine
This is Rietveld 408576698