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

Unified Diff: ash/accelerators/accelerator_controller.cc

Issue 12494011: Keyboard shortcut to log views, layers, windows (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: cleanup Created 7 years, 9 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
« no previous file with comments | « no previous file | ash/accelerators/accelerator_table.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/accelerators/accelerator_controller.cc
diff --git a/ash/accelerators/accelerator_controller.cc b/ash/accelerators/accelerator_controller.cc
index 9bcf23318c5ec3949a5bd6c252948b3b756ca02c..79f8f414517660ae3540d289537ac88da4a2ae42 100644
--- a/ash/accelerators/accelerator_controller.cc
+++ b/ash/accelerators/accelerator_controller.cc
@@ -6,6 +6,7 @@
#include <algorithm>
#include <cmath>
+#include <iostream>
#include <string>
#include "ash/accelerators/accelerator_table.h"
@@ -274,7 +275,6 @@ bool HandleMediaPrevTrack() {
return true;
}
-#if !defined(NDEBUG)
bool HandlePrintLayerHierarchy() {
Shell::RootWindowList root_windows = Shell::GetAllRootWindows();
for (size_t i = 0; i < root_windows.size(); ++i) {
@@ -290,38 +290,52 @@ bool HandlePrintViewHierarchy() {
return true;
views::Widget* browser_widget =
views::Widget::GetWidgetForNativeWindow(active_window);
- if (browser_widget)
- views::PrintViewHierarchy(browser_widget->GetRootView());
+ if (!browser_widget)
+ return true;
+ views::PrintViewHierarchy(browser_widget->GetRootView());
return true;
}
-void PrintWindowHierarchy(aura::Window* window, int indent) {
+void PrintWindowHierarchy(aura::Window* window,
+ int indent,
+ std::ostringstream* out) {
std::string indent_str(indent, ' ');
std::string name(window->name());
if (name.empty())
name = "\"\"";
- DLOG(INFO) << indent_str << name << " (" << window << ")"
- << " type=" << window->type()
- << (wm::IsActiveWindow(window) ? " [active] " : " ")
- << (window->IsVisible() ? " visible " : " ")
- << window->bounds().ToString();
+ *out << indent_str << name << " (" << window << ")"
+ << " type=" << window->type()
+ << (wm::IsActiveWindow(window) ? " [active] " : " ")
+ << (window->IsVisible() ? " visible " : " ")
+ << window->bounds().ToString()
+ << '\n';
for (size_t i = 0; i < window->children().size(); ++i)
- PrintWindowHierarchy(window->children()[i], indent + 3);
+ PrintWindowHierarchy(window->children()[i], indent + 3, out);
}
bool HandlePrintWindowHierarchy() {
- DLOG(INFO) << "Window hierarchy:";
Shell::RootWindowControllerList controllers =
Shell::GetAllRootWindowControllers();
for (size_t i = 0; i < controllers.size(); ++i) {
- DLOG(INFO) << "RootWindow " << i << ":";
- PrintWindowHierarchy(controllers[i]->root_window(), 0);
+ std::ostringstream out;
+ out << "RootWindow " << i << ":\n";
+ PrintWindowHierarchy(controllers[i]->root_window(), 0, &out);
+ // Error so logs can be collected from end-users.
+ LOG(ERROR) << out.str();
}
return true;
}
-#endif // !defined(NDEBUG)
+bool HandlePrintUIHierarchies() {
+ // This is a separate command so the user only has to hit one key to generate
+ // all the logs. Developers use the individual dumps repeatedly, so keep
+ // those as separate commands to avoid spamming their logs.
+ HandlePrintLayerHierarchy();
+ HandlePrintWindowHierarchy();
+ HandlePrintViewHierarchy();
+ return true;
+}
} // namespace
@@ -712,6 +726,8 @@ bool AcceleratorController::PerformAction(int action,
if (ime_control_delegate_.get())
return ime_control_delegate_->HandlePreviousIme();
break;
+ case PRINT_UI_HIERARCHIES:
+ return HandlePrintUIHierarchies();
case SWITCH_IME:
if (ime_control_delegate_.get())
return ime_control_delegate_->HandleSwitchIme(accelerator);
« no previous file with comments | « no previous file | ash/accelerators/accelerator_table.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698