| Index: views/view.cc | 
| =================================================================== | 
| --- views/view.cc	(revision 74231) | 
| +++ views/view.cc	(working copy) | 
| @@ -5,9 +5,6 @@ | 
| #include "views/view.h" | 
|  | 
| #include <algorithm> | 
| -#ifndef NDEBUG | 
| -#include <iostream> | 
| -#endif | 
|  | 
| #include "base/logging.h" | 
| #include "base/message_loop.h" | 
| @@ -81,11 +78,11 @@ | 
| if (parent_) | 
| parent_->RemoveChildView(this); | 
|  | 
| -  int c = static_cast<int>(child_views_.size()); | 
| +  int c = static_cast<int>(children_.size()); | 
| while (--c >= 0) { | 
| -    child_views_[c]->SetParent(NULL); | 
| -    if (child_views_[c]->IsParentOwned()) | 
| -      delete child_views_[c]; | 
| +    children_[c]->SetParent(NULL); | 
| +    if (children_[c]->IsParentOwned()) | 
| +      delete children_[c]; | 
| } | 
|  | 
| #if defined(OS_WIN) | 
| @@ -96,114 +93,109 @@ | 
|  | 
| // Tree operations ------------------------------------------------------------- | 
|  | 
| -void View::AddChildView(View* v) { | 
| -  AddChildView(static_cast<int>(child_views_.size()), v); | 
| +const Widget* View::GetWidget() const { | 
| +  // The root view holds a reference to this view hierarchy's Widget. | 
| +  return parent_ ? parent_->GetWidget() : NULL; | 
| } | 
|  | 
| -void View::AddChildView(int index, View* v) { | 
| -  CHECK(v != this) << "You cannot add a view as its own child"; | 
| +Widget* View::GetWidget() { | 
| +  return const_cast<Widget*>(const_cast<const View*>(this)->GetWidget()); | 
| +} | 
|  | 
| +void View::AddChildView(View* view) { | 
| +  AddChildViewAt(view, child_count()); | 
| +} | 
| + | 
| +void View::AddChildViewAt(View* view, int index) { | 
| +  CHECK(view != this) << "You cannot add a view as its own child"; | 
| + | 
| // Remove the view from its current parent if any. | 
| -  if (v->GetParent()) | 
| -    v->GetParent()->RemoveChildView(v); | 
| +  if (view->parent()) | 
| +    view->parent()->RemoveChildView(view); | 
|  | 
| // Sets the prev/next focus views. | 
| -  InitFocusSiblings(v, index); | 
| +  InitFocusSiblings(view, index); | 
|  | 
| // Let's insert the view. | 
| -  child_views_.insert(child_views_.begin() + index, v); | 
| -  v->SetParent(this); | 
| +  children_.insert(children_.begin() + index, view); | 
| +  view->SetParent(this); | 
|  | 
| -  for (View* p = this; p; p = p->GetParent()) | 
| -    p->ViewHierarchyChangedImpl(false, true, this, v); | 
| +  for (View* p = this; p; p = p->parent()) | 
| +    p->ViewHierarchyChangedImpl(false, true, this, view); | 
|  | 
| -  v->PropagateAddNotifications(this, v); | 
| +  view->PropagateAddNotifications(this, view); | 
| UpdateTooltip(); | 
| RootView* root = GetRootView(); | 
| if (root) | 
| -    RegisterChildrenForVisibleBoundsNotification(root, v); | 
| +    RegisterChildrenForVisibleBoundsNotification(root, view); | 
|  | 
| if (layout_manager_.get()) | 
| -    layout_manager_->ViewAdded(this, v); | 
| +    layout_manager_->ViewAdded(this, view); | 
| } | 
|  | 
| -View* View::GetChildViewAt(int index) const { | 
| -  return index < GetChildViewCount() ? child_views_[index] : NULL; | 
| +void View::RemoveChildView(View* view) { | 
| +  DoRemoveChildView(view, true, true, false); | 
| } | 
|  | 
| -void View::RemoveChildView(View* a_view) { | 
| -  DoRemoveChildView(a_view, true, true, false); | 
| -} | 
| - | 
| void View::RemoveAllChildViews(bool delete_views) { | 
| -  ViewList::iterator iter; | 
| -  while ((iter = child_views_.begin()) != child_views_.end()) { | 
| +  ViewVector::iterator iter; | 
| +  while ((iter = children_.begin()) != children_.end()) | 
| DoRemoveChildView(*iter, false, false, delete_views); | 
| -  } | 
| UpdateTooltip(); | 
| } | 
|  | 
| -int View::GetChildViewCount() const { | 
| -  return static_cast<int>(child_views_.size()); | 
| +const View* View::GetChildViewAt(int index) const { | 
| +  return index < child_count() ? children_[index] : NULL; | 
| } | 
|  | 
| -bool View::HasChildView(View* a_view) { | 
| -  return find(child_views_.begin(), | 
| -    child_views_.end(), | 
| -    a_view) != child_views_.end(); | 
| +View* View::GetChildViewAt(int index) { | 
| +  return | 
| +      const_cast<View*>(const_cast<const View*>(this)->GetChildViewAt(index)); | 
| } | 
|  | 
| -Widget* View::GetWidget() const { | 
| -  // The root view holds a reference to this view hierarchy's Widget. | 
| -  return parent_ ? parent_->GetWidget() : NULL; | 
| +bool View::Contains(const View* view) const { | 
| +  const View* child = view; | 
| +  while (child) { | 
| +    if (child == this) | 
| +      return true; | 
| +    child = child->parent(); | 
| +  } | 
| +  return false; | 
| } | 
|  | 
| -Window* View::GetWindow() const { | 
| -  Widget* widget = GetWidget(); | 
| +int View::GetIndexOf(const View* view) const { | 
| +  ViewVector::const_iterator it = std::find(children_.begin(), children_.end(), | 
| +                                            view); | 
| +  return it != children_.end() ? it - children_.begin() : -1; | 
| +} | 
| + | 
| +// TODO(beng): remove | 
| +const Window* View::GetWindow() const { | 
| +  const Widget* widget = GetWidget(); | 
| return widget ? widget->GetWindow() : NULL; | 
| } | 
|  | 
| +// TODO(beng): remove | 
| +Window* View::GetWindow() { | 
| +  return const_cast<Window*>(const_cast<const View*>(this)->GetWindow()); | 
| +} | 
| + | 
| +// TODO(beng): remove | 
| bool View::ContainsNativeView(gfx::NativeView native_view) const { | 
| -  for (int i = 0, count = GetChildViewCount(); i < count; ++i) { | 
| +  for (int i = 0, count = child_count(); i < count; ++i) { | 
| if (GetChildViewAt(i)->ContainsNativeView(native_view)) | 
| return true; | 
| } | 
| return false; | 
| } | 
|  | 
| -// Get the containing RootView | 
| +// TODO(beng): remove | 
| RootView* View::GetRootView() { | 
| Widget* widget = GetWidget(); | 
| return widget ? widget->GetRootView() : NULL; | 
| } | 
|  | 
| -int View::GetChildIndex(const View* v) const { | 
| -  for (int i = 0, count = GetChildViewCount(); i < count; i++) { | 
| -    if (v == GetChildViewAt(i)) | 
| -      return i; | 
| -  } | 
| -  return -1; | 
| -} | 
| - | 
| -bool View::IsParentOf(View* v) const { | 
| -  DCHECK(v); | 
| -  View* parent = v->GetParent(); | 
| -  while (parent) { | 
| -    if (this == parent) | 
| -      return true; | 
| -    parent = parent->GetParent(); | 
| -  } | 
| -  return false; | 
| -} | 
| - | 
| #ifndef NDEBUG | 
| -void View::PrintViewHierarchy() { | 
| -  PrintViewHierarchyImp(0); | 
| -} | 
| - | 
| -void View::PrintFocusHierarchy() { | 
| -  PrintFocusHierarchyImp(0); | 
| -} | 
| #endif | 
|  | 
| // Size and disposition -------------------------------------------------------- | 
| @@ -289,7 +281,7 @@ | 
| root_x += view->GetMirroredX(); | 
| root_y += view->y(); | 
| vis_bounds.Offset(view->GetMirroredX(), view->y()); | 
| -    View* ancestor = view->GetParent(); | 
| +    View* ancestor = view->parent(); | 
| if (ancestor != NULL) { | 
| ancestor_bounds.SetRect(0, 0, ancestor->width(), | 
| ancestor->height()); | 
| @@ -348,7 +340,7 @@ | 
|  | 
| is_visible_ = flag; | 
|  | 
| -    // This notifies all subviews recursively. | 
| +    // This notifies all sub-views recursively. | 
| PropagateVisibilityNotifications(this, flag); | 
|  | 
| // If we are newly visible, schedule paint. | 
| @@ -358,11 +350,7 @@ | 
| } | 
|  | 
| bool View::IsVisibleInRootView() const { | 
| -  View* parent = GetParent(); | 
| -  if (IsVisible() && parent) | 
| -    return parent->IsVisibleInRootView(); | 
| -  else | 
| -    return false; | 
| +  return IsVisible() && parent() ? parent()->IsVisibleInRootView() : false; | 
| } | 
|  | 
| void View::SetEnabled(bool state) { | 
| @@ -389,8 +377,7 @@ | 
| } | 
|  | 
| int View::GetMirroredX() const { | 
| -  View* parent = GetParent(); | 
| -  return parent ? parent->GetMirroredXForRect(bounds_) : x(); | 
| +  return parent() ? parent()->GetMirroredXForRect(bounds_) : x(); | 
| } | 
|  | 
| int View::GetMirroredXForRect(const gfx::Rect& bounds) const { | 
| @@ -423,7 +410,7 @@ | 
| // weren't changed by the layout manager. If there is no layout manager, we | 
| // just propagate the Layout() call down the hierarchy, so whoever receives | 
| // the call can take appropriate action. | 
| -  for (int i = 0, count = GetChildViewCount(); i < count; ++i) { | 
| +  for (int i = 0, count = child_count(); i < count; ++i) { | 
| View* child = GetChildViewAt(i); | 
| if (child->needs_layout_ || !layout_manager_.get()) { | 
| child->needs_layout_ = false; | 
| @@ -460,26 +447,29 @@ | 
| } | 
|  | 
| View* View::GetAncestorWithClassName(const std::string& name) { | 
| -  for (View* view = this; view; view = view->GetParent()) { | 
| +  for (View* view = this; view; view = view->parent()) { | 
| if (view->GetClassName() == name) | 
| return view; | 
| } | 
| return NULL; | 
| } | 
|  | 
| -View* View::GetViewByID(int id) const { | 
| +const View* View::GetViewByID(int id) const { | 
| if (id == id_) | 
| return const_cast<View*>(this); | 
|  | 
| -  for (int i = 0, count = GetChildViewCount(); i < count; ++i) { | 
| -    View* child = GetChildViewAt(i); | 
| -    View* view = child->GetViewByID(id); | 
| +  for (int i = 0, count = child_count(); i < count; ++i) { | 
| +    const View* view = GetChildViewAt(i)->GetViewByID(id); | 
| if (view) | 
| return view; | 
| } | 
| return NULL; | 
| } | 
|  | 
| +View* View::GetViewByID(int id) { | 
| +  return const_cast<View*>(const_cast<const View*>(this)->GetViewByID(id)); | 
| +} | 
| + | 
| void View::SetID(int id) { | 
| id_ = id; | 
| } | 
| @@ -502,7 +492,7 @@ | 
| if (group_ == group_id) | 
| out->push_back(this); | 
|  | 
| -  for (int i = 0, count = GetChildViewCount(); i < count; ++i) | 
| +  for (int i = 0, count = child_count(); i < count; ++i) | 
| GetChildViewAt(i)->GetViewsWithGroup(group_id, out); | 
| } | 
|  | 
| @@ -530,7 +520,7 @@ | 
| DCHECK(p); | 
|  | 
| gfx::Point offset; | 
| -  for (const View* v = src; v; v = v->GetParent()) { | 
| +  for (const View* v = src; v; v = v->parent()) { | 
| offset.set_x(offset.x() + v->GetMirroredX()); | 
| offset.set_y(offset.y() + v->y()); | 
| } | 
| @@ -550,7 +540,7 @@ | 
| DCHECK(p); | 
|  | 
| // If the view is not connected to a tree, there's nothing we can do. | 
| -  Widget* widget = src->GetWidget(); | 
| +  const Widget* widget = src->GetWidget(); | 
| if (widget) { | 
| ConvertPointToWidget(src, p); | 
| gfx::Rect r; | 
| @@ -603,9 +593,8 @@ | 
| if (!IsVisible()) | 
| return; | 
|  | 
| -  View* view = GetParent(); | 
| -  if (view) | 
| -    view->PaintNow(); | 
| +  if (parent()) | 
| +    parent()->PaintNow(); | 
| } | 
|  | 
| void View::ProcessPaint(gfx::Canvas* canvas) { | 
| @@ -650,7 +639,7 @@ | 
| } | 
|  | 
| void View::PaintChildren(gfx::Canvas* canvas) { | 
| -  for (int i = 0, count = GetChildViewCount(); i < count; ++i) { | 
| +  for (int i = 0, count = child_count(); i < count; ++i) { | 
| View* child = GetChildViewAt(i); | 
| if (!child) { | 
| NOTREACHED() << "Should not have a NULL child View for index in bounds"; | 
| @@ -661,7 +650,7 @@ | 
| } | 
|  | 
| ThemeProvider* View::GetThemeProvider() const { | 
| -  Widget* widget = GetWidget(); | 
| +  const Widget* widget = GetWidget(); | 
| return widget ? widget->GetThemeProvider() : NULL; | 
| } | 
|  | 
| @@ -670,7 +659,7 @@ | 
| View* View::GetViewForPoint(const gfx::Point& point) { | 
| // Walk the child Views recursively looking for the View that most | 
| // tightly encloses the specified point. | 
| -  for (int i = GetChildViewCount() - 1; i >= 0; --i) { | 
| +  for (int i = child_count() - 1; i >= 0; --i) { | 
| View* child = GetChildViewAt(i); | 
| if (!child->IsVisible()) | 
| continue; | 
| @@ -819,6 +808,10 @@ | 
| return next_focusable_view_; | 
| } | 
|  | 
| +const View* View::GetNextFocusableView() const { | 
| +  return next_focusable_view_; | 
| +} | 
| + | 
| View* View::GetPreviousFocusableView() { | 
| return previous_focusable_view_; | 
| } | 
| @@ -955,14 +948,12 @@ | 
| // Scrolling ------------------------------------------------------------------- | 
|  | 
| void View::ScrollRectToVisible(const gfx::Rect& rect) { | 
| -  View* parent = GetParent(); | 
| - | 
| // We must take RTL UI mirroring into account when adjusting the position of | 
| // the region. | 
| -  if (parent) { | 
| +  if (parent()) { | 
| gfx::Rect scroll_rect(rect); | 
| scroll_rect.Offset(GetMirroredX(), y()); | 
| -    parent->ScrollRectToVisible(scroll_rect); | 
| +    parent()->ScrollRectToVisible(scroll_rect); | 
| } | 
| } | 
|  | 
| @@ -1034,7 +1025,7 @@ | 
|  | 
| #ifndef NDEBUG | 
| bool View::IsProcessingPaint() const { | 
| -  return GetParent() && GetParent()->IsProcessingPaint(); | 
| +  return parent() && parent()->IsProcessingPaint(); | 
| } | 
| #endif | 
|  | 
| @@ -1121,7 +1112,7 @@ | 
|  | 
| // Tree operations ------------------------------------------------------------- | 
|  | 
| -void View::DoRemoveChildView(View* a_view, | 
| +void View::DoRemoveChildView(View* view, | 
| bool update_focus_cycle, | 
| bool update_tool_tip, | 
| bool delete_removed_view) { | 
| @@ -1130,16 +1121,14 @@ | 
| "during a paint, this will seriously " << | 
| "mess things up!"; | 
| #endif | 
| -  DCHECK(a_view); | 
| -  const ViewList::iterator i =  find(child_views_.begin(), | 
| -                                     child_views_.end(), | 
| -                                     a_view); | 
| +  DCHECK(view); | 
| +  const ViewVector::iterator i = find(children_.begin(), children_.end(), view); | 
| scoped_ptr<View> view_to_be_deleted; | 
| -  if (i != child_views_.end()) { | 
| +  if (i != children_.end()) { | 
| if (update_focus_cycle) { | 
| // Let's remove the view from the focus traversal. | 
| -      View* next_focusable = a_view->next_focusable_view_; | 
| -      View* prev_focusable = a_view->previous_focusable_view_; | 
| +      View* next_focusable = view->next_focusable_view_; | 
| +      View* prev_focusable = view->previous_focusable_view_; | 
| if (prev_focusable) | 
| prev_focusable->next_focusable_view_ = next_focusable; | 
| if (next_focusable) | 
| @@ -1148,21 +1137,21 @@ | 
|  | 
| RootView* root = GetRootView(); | 
| if (root) | 
| -      UnregisterChildrenForVisibleBoundsNotification(root, a_view); | 
| -    a_view->PropagateRemoveNotifications(this); | 
| -    a_view->SetParent(NULL); | 
| +      UnregisterChildrenForVisibleBoundsNotification(root, view); | 
| +    view->PropagateRemoveNotifications(this); | 
| +    view->SetParent(NULL); | 
|  | 
| -    if (delete_removed_view && a_view->IsParentOwned()) | 
| -      view_to_be_deleted.reset(a_view); | 
| +    if (delete_removed_view && view->IsParentOwned()) | 
| +      view_to_be_deleted.reset(view); | 
|  | 
| -    child_views_.erase(i); | 
| +    children_.erase(i); | 
| } | 
|  | 
| if (update_tool_tip) | 
| UpdateTooltip(); | 
|  | 
| if (layout_manager_.get()) | 
| -    layout_manager_->ViewRemoved(this, a_view); | 
| +    layout_manager_->ViewRemoved(this, view); | 
| } | 
|  | 
| void View::SetParent(View* parent) { | 
| @@ -1171,15 +1160,15 @@ | 
| } | 
|  | 
| void View::PropagateRemoveNotifications(View* parent) { | 
| -  for (int i = 0, count = GetChildViewCount(); i < count; ++i) | 
| +  for (int i = 0, count = child_count(); i < count; ++i) | 
| GetChildViewAt(i)->PropagateRemoveNotifications(parent); | 
|  | 
| -  for (View* v = this; v; v = v->GetParent()) | 
| +  for (View* v = this; v; v = v->parent()) | 
| v->ViewHierarchyChangedImpl(true, false, parent, this); | 
| } | 
|  | 
| void View::PropagateAddNotifications(View* parent, View* child) { | 
| -  for (int i = 0, count = GetChildViewCount(); i < count; ++i) | 
| +  for (int i = 0, count = child_count(); i < count; ++i) | 
| GetChildViewAt(i)->PropagateAddNotifications(parent, child); | 
| ViewHierarchyChangedImpl(true, true, parent, child); | 
| } | 
| @@ -1187,7 +1176,7 @@ | 
| void View::PropagateNativeViewHierarchyChanged(bool attached, | 
| gfx::NativeView native_view, | 
| RootView* root_view) { | 
| -  for (int i = 0, count = GetChildViewCount(); i < count; ++i) | 
| +  for (int i = 0, count = child_count(); i < count; ++i) | 
| GetChildViewAt(i)->PropagateNativeViewHierarchyChanged(attached, | 
| native_view, | 
| root_view); | 
| @@ -1219,57 +1208,10 @@ | 
| parent->needs_layout_ = true; | 
| } | 
|  | 
| -#ifndef NDEBUG | 
| -void View::PrintViewHierarchyImp(int indent) { | 
| -  std::wostringstream buf; | 
| -  int ind = indent; | 
| -  while (ind-- > 0) | 
| -    buf << L' '; | 
| -  buf << UTF8ToWide(GetClassName()); | 
| -  buf << L' '; | 
| -  buf << GetID(); | 
| -  buf << L' '; | 
| -  buf << bounds_.x() << L"," << bounds_.y() << L","; | 
| -  buf << bounds_.right() << L"," << bounds_.bottom(); | 
| -  buf << L' '; | 
| -  buf << this; | 
| - | 
| -  VLOG(1) << buf.str(); | 
| -  std::cout << buf.str() << std::endl; | 
| - | 
| -  for (int i = 0, count = GetChildViewCount(); i < count; ++i) | 
| -    GetChildViewAt(i)->PrintViewHierarchyImp(indent + 2); | 
| -} | 
| - | 
| -void View::PrintFocusHierarchyImp(int indent) { | 
| -  std::wostringstream buf; | 
| -  int ind = indent; | 
| -  while (ind-- > 0) | 
| -    buf << L' '; | 
| -  buf << UTF8ToWide(GetClassName()); | 
| -  buf << L' '; | 
| -  buf << GetID(); | 
| -  buf << L' '; | 
| -  buf << GetClassName().c_str(); | 
| -  buf << L' '; | 
| -  buf << this; | 
| - | 
| -  VLOG(1) << buf.str(); | 
| -  std::cout << buf.str() << std::endl; | 
| - | 
| -  if (GetChildViewCount() > 0) | 
| -    GetChildViewAt(0)->PrintFocusHierarchyImp(indent + 2); | 
| - | 
| -  View* v = GetNextFocusableView(); | 
| -  if (v) | 
| -    v->PrintFocusHierarchyImp(indent); | 
| -} | 
| -#endif | 
| - | 
| // Size and disposition -------------------------------------------------------- | 
|  | 
| void View::PropagateVisibilityNotifications(View* start, bool is_visible) { | 
| -  for (int i = 0, count = GetChildViewCount(); i < count; ++i) | 
| +  for (int i = 0, count = child_count(); i < count; ++i) | 
| GetChildViewAt(i)->PropagateVisibilityNotifications(start, is_visible); | 
| VisibilityChangedImpl(start, is_visible); | 
| } | 
| @@ -1288,7 +1230,7 @@ | 
| DCHECK(root && view); | 
| if (view->GetNotifyWhenVisibleBoundsInRootChanges()) | 
| root->RegisterViewForVisibleBoundsNotification(view); | 
| -  for (int i = 0; i < view->GetChildViewCount(); ++i) | 
| +  for (int i = 0; i < view->child_count(); ++i) | 
| RegisterChildrenForVisibleBoundsNotification(root, view->GetChildViewAt(i)); | 
| } | 
|  | 
| @@ -1298,7 +1240,7 @@ | 
| DCHECK(root && view); | 
| if (view->GetNotifyWhenVisibleBoundsInRootChanges()) | 
| root->UnregisterViewForVisibleBoundsNotification(view); | 
| -  for (int i = 0; i < view->GetChildViewCount(); ++i) | 
| +  for (int i = 0; i < view->child_count(); ++i) | 
| UnregisterChildrenForVisibleBoundsNotification(root, | 
| view->GetChildViewAt(i)); | 
| } | 
| @@ -1306,15 +1248,15 @@ | 
| void View::AddDescendantToNotify(View* view) { | 
| DCHECK(view); | 
| if (!descendants_to_notify_.get()) | 
| -    descendants_to_notify_.reset(new ViewList()); | 
| +    descendants_to_notify_.reset(new ViewVector); | 
| descendants_to_notify_->push_back(view); | 
| } | 
|  | 
| void View::RemoveDescendantToNotify(View* view) { | 
| DCHECK(view && descendants_to_notify_.get()); | 
| -  ViewList::iterator i = find(descendants_to_notify_->begin(), | 
| -                              descendants_to_notify_->end(), | 
| -                              view); | 
| +  ViewVector::iterator i = find(descendants_to_notify_->begin(), | 
| +                                descendants_to_notify_->end(), | 
| +                                view); | 
| DCHECK(i != descendants_to_notify_->end()); | 
| descendants_to_notify_->erase(i); | 
| if (descendants_to_notify_->empty()) | 
| @@ -1335,7 +1277,7 @@ | 
| const View* v; | 
| gfx::Point offset; | 
|  | 
| -  for (v = dst; v && v != src; v = v->GetParent()) | 
| +  for (v = dst; v && v != src; v = v->parent()) | 
| offset.SetPoint(offset.x() + v->GetMirroredX(), offset.y() + v->y()); | 
|  | 
| // The source was not found. The caller wants a conversion | 
| @@ -1353,7 +1295,7 @@ | 
|  | 
| // If src is NULL, sp is in the screen coordinate system | 
| if (src == NULL) { | 
| -      Widget* widget = dst->GetWidget(); | 
| +      const Widget* widget = dst->GetWidget(); | 
| if (widget) { | 
| gfx::Rect b; | 
| widget->GetBounds(&b, false); | 
| @@ -1494,7 +1436,7 @@ | 
| // Focus ----------------------------------------------------------------------- | 
|  | 
| void View::InitFocusSiblings(View* v, int index) { | 
| -  int child_count = static_cast<int>(child_views_.size()); | 
| +  int child_count = static_cast<int>(children_.size()); | 
|  | 
| if (child_count == 0) { | 
| v->next_focusable_view_ = NULL; | 
| @@ -1505,8 +1447,8 @@ | 
| // the last focusable element. Let's try to find an element with no next | 
| // focusable element to link to. | 
| View* last_focusable_view = NULL; | 
| -      for (std::vector<View*>::iterator iter = child_views_.begin(); | 
| -           iter != child_views_.end(); ++iter) { | 
| +      for (std::vector<View*>::iterator iter = children_.begin(); | 
| +           iter != children_.end(); ++iter) { | 
| if (!(*iter)->next_focusable_view_) { | 
| last_focusable_view = *iter; | 
| break; | 
| @@ -1515,7 +1457,7 @@ | 
| if (last_focusable_view == NULL) { | 
| // Hum... there is a cycle in the focus list. Let's just insert ourself | 
| // after the last child. | 
| -        View* prev = child_views_[index - 1]; | 
| +        View* prev = children_[index - 1]; | 
| v->previous_focusable_view_ = prev; | 
| v->next_focusable_view_ = prev->next_focusable_view_; | 
| prev->next_focusable_view_->previous_focusable_view_ = v; | 
| @@ -1526,12 +1468,12 @@ | 
| v->previous_focusable_view_ = last_focusable_view; | 
| } | 
| } else { | 
| -      View* prev = child_views_[index]->GetPreviousFocusableView(); | 
| +      View* prev = children_[index]->GetPreviousFocusableView(); | 
| v->previous_focusable_view_ = prev; | 
| -      v->next_focusable_view_ = child_views_[index]; | 
| +      v->next_focusable_view_ = children_[index]; | 
| if (prev) | 
| prev->next_focusable_view_ = v; | 
| -      child_views_[index]->previous_focusable_view_ = v; | 
| +      children_[index]->previous_focusable_view_ = v; | 
| } | 
| } | 
| } | 
| @@ -1539,13 +1481,13 @@ | 
| // System events --------------------------------------------------------------- | 
|  | 
| void View::PropagateThemeChanged() { | 
| -  for (int i = GetChildViewCount() - 1; i >= 0; --i) | 
| +  for (int i = child_count() - 1; i >= 0; --i) | 
| GetChildViewAt(i)->PropagateThemeChanged(); | 
| OnThemeChanged(); | 
| } | 
|  | 
| void View::PropagateLocaleChanged() { | 
| -  for (int i = GetChildViewCount() - 1; i >= 0; --i) | 
| +  for (int i = child_count() - 1; i >= 0; --i) | 
| GetChildViewAt(i)->PropagateLocaleChanged(); | 
| OnLocaleChanged(); | 
| } | 
|  |