| OLD | NEW | 
| (Empty) |  | 
 |   1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 
 |   2 // Use of this source code is governed by a BSD-style license that can be | 
 |   3 // found in the LICENSE file. | 
 |   4  | 
 |   5 #include "views/debug_utils.h" | 
 |   6  | 
 |   7 #include "base/logging.h" | 
 |   8 #include "base/utf_string_conversions.h" | 
 |   9 #include "views/view.h" | 
 |  10  | 
 |  11 #ifndef NDEBUG | 
 |  12 #include <iostream> | 
 |  13 #endif | 
 |  14  | 
 |  15 namespace views { | 
 |  16  | 
 |  17 #ifndef NDEBUG | 
 |  18  | 
 |  19 namespace { | 
 |  20 void PrintViewHierarchyImp(const View* view, int indent) { | 
 |  21   std::wostringstream buf; | 
 |  22   int ind = indent; | 
 |  23   while (ind-- > 0) | 
 |  24     buf << L' '; | 
 |  25   buf << UTF8ToWide(view->GetClassName()); | 
 |  26   buf << L' '; | 
 |  27   buf << view->GetID(); | 
 |  28   buf << L' '; | 
 |  29   buf << view->x() << L"," << view->y() << L","; | 
 |  30   buf << view->bounds().right() << L"," << view->bounds().bottom(); | 
 |  31   buf << L' '; | 
 |  32   buf << view; | 
 |  33  | 
 |  34   VLOG(1) << buf.str(); | 
 |  35   std::cout << buf.str() << std::endl; | 
 |  36  | 
 |  37   for (int i = 0, count = view->child_count(); i < count; ++i) | 
 |  38     PrintViewHierarchyImp(view->GetChildViewAt(i), indent + 2); | 
 |  39 } | 
 |  40  | 
 |  41 void PrintFocusHierarchyImp(const View* view, int indent) { | 
 |  42   std::wostringstream buf; | 
 |  43   int ind = indent; | 
 |  44   while (ind-- > 0) | 
 |  45     buf << L' '; | 
 |  46   buf << UTF8ToWide(view->GetClassName()); | 
 |  47   buf << L' '; | 
 |  48   buf << view->GetID(); | 
 |  49   buf << L' '; | 
 |  50   buf << view->GetClassName().c_str(); | 
 |  51   buf << L' '; | 
 |  52   buf << view; | 
 |  53  | 
 |  54   VLOG(1) << buf.str(); | 
 |  55   std::cout << buf.str() << std::endl; | 
 |  56  | 
 |  57   if (view->child_count() > 0) | 
 |  58     PrintFocusHierarchyImp(view->GetChildViewAt(0), indent + 2); | 
 |  59  | 
 |  60   const View* next_focusable = view->GetNextFocusableView(); | 
 |  61   if (next_focusable) | 
 |  62     PrintFocusHierarchyImp(next_focusable, indent); | 
 |  63 } | 
 |  64 }  // namespace | 
 |  65  | 
 |  66 void PrintViewHierarchy(const View* view) { | 
 |  67   PrintViewHierarchyImp(view, 0); | 
 |  68 } | 
 |  69  | 
 |  70 void PrintFocusHierarchy(const View* view) { | 
 |  71   PrintFocusHierarchyImp(view, 0); | 
 |  72 } | 
 |  73  | 
 |  74 }  // namespace views | 
 |  75  | 
 |  76 #endif  // NDEBUG | 
| OLD | NEW |