Chromium Code Reviews| Index: ash/accelerators/accelerator_controller.cc |
| diff --git a/ash/accelerators/accelerator_controller.cc b/ash/accelerators/accelerator_controller.cc |
| index 9bcf23318c5ec3949a5bd6c252948b3b756ca02c..059d702fb6dc1061013bbc70cade3017387d0f52 100644 |
| --- a/ash/accelerators/accelerator_controller.cc |
| +++ b/ash/accelerators/accelerator_controller.cc |
| @@ -274,7 +274,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,8 +289,11 @@ 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; |
| + // Error so logs can be collected from end-users. |
| + LOG(ERROR) << "View hierarchy:"; |
| + views::PrintViewHierarchy(browser_widget->GetRootView()); |
| return true; |
| } |
| @@ -300,28 +302,37 @@ void PrintWindowHierarchy(aura::Window* window, int 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(); |
| + // Error so logs can be collected from end-users. |
| + LOG(ERROR) << indent_str << name << " (" << window << ")" |
| + << " type=" << window->type() |
|
Daniel Erat
2013/03/16 03:32:23
nit: fix indenting on this and following lines
James Cook
2013/03/16 04:09:24
Done.
|
| + << (wm::IsActiveWindow(window) ? " [active] " : " ") |
| + << (window->IsVisible() ? " visible " : " ") |
| + << window->bounds().ToString(); |
| for (size_t i = 0; i < window->children().size(); ++i) |
| PrintWindowHierarchy(window->children()[i], indent + 3); |
| } |
| bool HandlePrintWindowHierarchy() { |
| - DLOG(INFO) << "Window hierarchy:"; |
| Shell::RootWindowControllerList controllers = |
| Shell::GetAllRootWindowControllers(); |
| for (size_t i = 0; i < controllers.size(); ++i) { |
| - DLOG(INFO) << "RootWindow " << i << ":"; |
| + // Error so logs can be collected from end-users. |
| + LOG(ERROR) << "RootWindow " << i << ":"; |
| PrintWindowHierarchy(controllers[i]->root_window(), 0); |
| } |
| 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 +723,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); |