Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / views / accessibility / accessibility_event_router_views_unittest.cc
index 49328c7..44aee57 100644 (file)
@@ -18,6 +18,7 @@
 #include "ui/views/controls/button/label_button.h"
 #include "ui/views/controls/label.h"
 #include "ui/views/controls/menu/menu_item_view.h"
+#include "ui/views/controls/menu/menu_model_adapter.h"
 #include "ui/views/controls/menu/menu_runner.h"
 #include "ui/views/controls/menu/submenu_view.h"
 #include "ui/views/layout/grid_layout.h"
@@ -43,15 +44,16 @@ using base::ASCIIToUTF16;
 class AccessibilityViewsDelegate : public views::TestViewsDelegate {
  public:
   AccessibilityViewsDelegate() {}
-  virtual ~AccessibilityViewsDelegate() {}
+  ~AccessibilityViewsDelegate() override {}
 
   // Overridden from views::TestViewsDelegate:
-  virtual void NotifyAccessibilityEvent(
-      views::View* view, ui::AXEvent event_type) OVERRIDE {
+  void NotifyAccessibilityEvent(views::View* view,
+                                ui::AXEvent event_type) override {
     AccessibilityEventRouterViews::GetInstance()->HandleAccessibilityEvent(
         view, event_type);
   }
 
+ private:
   DISALLOW_COPY_AND_ASSIGN(AccessibilityViewsDelegate);
 };
 
@@ -61,12 +63,12 @@ class AccessibilityWindowDelegate : public views::WidgetDelegate {
       : contents_(contents) { }
 
   // Overridden from views::WidgetDelegate:
-  virtual void DeleteDelegate() OVERRIDE { delete this; }
-  virtual views::View* GetContentsView() OVERRIDE { return contents_; }
-  virtual const views::Widget* GetWidget() const OVERRIDE {
+  void DeleteDelegate() override { delete this; }
+  views::View* GetContentsView() override { return contents_; }
+  const views::Widget* GetWidget() const override {
     return contents_->GetWidget();
   }
-  virtual views::Widget* GetWidget() OVERRIDE { return contents_->GetWidget(); }
+  views::Widget* GetWidget() override { return contents_->GetWidget(); }
 
  private:
   views::View* contents_;
@@ -82,7 +84,7 @@ class ViewWithNameAndRole : public views::View {
         role_(role) {
   }
 
-  virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE {
+  void GetAccessibleState(ui::AXViewState* state) override {
     views::View::GetAccessibleState(state);
     state->name = name_;
     state->role = role_;
@@ -102,7 +104,7 @@ class AccessibilityEventRouterViewsTest
   AccessibilityEventRouterViewsTest() : control_event_count_(0) {
   }
 
-  virtual void SetUp() {
+  void SetUp() override {
 #if defined(OS_WIN)
     ole_initializer_.reset(new ui::ScopedOleInitializer());
 #endif
@@ -110,23 +112,23 @@ class AccessibilityEventRouterViewsTest
 #if defined(USE_AURA)
     // The ContextFactory must exist before any Compositors are created.
     bool enable_pixel_output = false;
-    ui::InitializeContextFactoryForTests(enable_pixel_output);
+    ui::ContextFactory* context_factory =
+        ui::InitializeContextFactoryForTests(enable_pixel_output);
 
     aura_test_helper_.reset(new aura::test::AuraTestHelper(&message_loop_));
-    aura_test_helper_->SetUp();
+    aura_test_helper_->SetUp(context_factory);
     new wm::DefaultActivationClient(aura_test_helper_->root_window());
 #endif  // USE_AURA
     EnableAccessibilityAndListenToFocusNotifications();
   }
 
-  virtual void TearDown() {
+  void TearDown() override {
     ClearCallback();
 #if defined(USE_AURA)
     aura_test_helper_->TearDown();
     ui::TerminateContextFactoryForTests();
 #endif
     delete views::ViewsDelegate::views_delegate;
-    views::ViewsDelegate::views_delegate = NULL;
 
     // The Widget's FocusManager is deleted using DeleteSoon - this
     // forces it to be deleted now, so we don't have any memory leaks
@@ -139,7 +141,7 @@ class AccessibilityEventRouterViewsTest
   }
 
   views::Widget* CreateWindowWithContents(views::View* contents) {
-    gfx::NativeView context = NULL;
+    gfx::NativeWindow context = NULL;
 #if defined(USE_AURA)
     context = aura_test_helper_->root_window();
 #endif
@@ -422,6 +424,32 @@ TEST_F(AccessibilityEventRouterViewsTest, AlertsFromWindowAndControl) {
   window->CloseNow();
 }
 
+TEST_F(AccessibilityEventRouterViewsTest, AccessibilityFocusableView) {
+  // Create a view with a child view.
+  views::View* parent = new views::View();
+  views::View* child = new views::View();
+  parent->AddChildView(child);
+
+  // Put the view in a window.
+  views::Widget* window = CreateWindowWithContents(parent);
+
+  // Since the child view has no accessibility focusable ancestors, this
+  // should still be the child view.
+  views::View* accessible_view =
+      AccessibilityEventRouterViews::FindFirstAccessibleAncestor(child);
+  EXPECT_EQ(accessible_view, child);
+
+  // Now make the parent view accessibility focusable. Calling
+  // FindFirstAccessibleAncestor() again on child should return the parent
+  // view.
+  parent->SetAccessibilityFocusable(true);
+  accessible_view =
+      AccessibilityEventRouterViews::FindFirstAccessibleAncestor(child);
+  EXPECT_EQ(accessible_view, parent);
+
+  window->CloseNow();
+}
+
 namespace {
 
 class SimpleMenuDelegate : public ui::SimpleMenuModel::Delegate {
@@ -434,7 +462,7 @@ class SimpleMenuDelegate : public ui::SimpleMenuModel::Delegate {
   };
 
   SimpleMenuDelegate() {}
-  virtual ~SimpleMenuDelegate() {}
+  ~SimpleMenuDelegate() override {}
 
   views::MenuItemView* BuildMenu() {
     menu_model_.reset(new ui::SimpleMenuModel(this));
@@ -445,33 +473,30 @@ class SimpleMenuDelegate : public ui::SimpleMenuModel::Delegate {
     menu_model_->AddSeparator(ui::NORMAL_SEPARATOR);
     menu_model_->AddItem(IDC_MENU_ITEM_3, ASCIIToUTF16("Item 3"));
 
-    menu_runner_.reset(new views::MenuRunner(menu_model_.get()));
-    return menu_runner_->GetMenu();
+    menu_adapter_.reset(new views::MenuModelAdapter(menu_model_.get()));
+    views::MenuItemView* menu_view = menu_adapter_->CreateMenu();
+    menu_runner_.reset(new views::MenuRunner(menu_view, 0));
+    return menu_view;
   }
 
-  virtual bool IsCommandIdChecked(int command_id) const OVERRIDE {
-    return false;
-  }
+  bool IsCommandIdChecked(int command_id) const override { return false; }
 
-  virtual bool IsCommandIdEnabled(int command_id) const OVERRIDE {
-    return true;
-  }
+  bool IsCommandIdEnabled(int command_id) const override { return true; }
 
-  virtual bool IsCommandIdVisible(int command_id) const OVERRIDE {
+  bool IsCommandIdVisible(int command_id) const override {
     return command_id != IDC_MENU_INVISIBLE;
   }
 
-  virtual bool GetAcceleratorForCommandId(
-      int command_id,
-      ui::Accelerator* accelerator) OVERRIDE {
+  bool GetAcceleratorForCommandId(int command_id,
+                                  ui::Accelerator* accelerator) override {
     return false;
   }
 
-  virtual void ExecuteCommand(int command_id, int event_flags) OVERRIDE {
-  }
+  void ExecuteCommand(int command_id, int event_flags) override {}
 
  private:
   scoped_ptr<ui::SimpleMenuModel> menu_model_;
+  scoped_ptr<views::MenuModelAdapter> menu_adapter_;
   scoped_ptr<views::MenuRunner> menu_runner_;
 
   DISALLOW_COPY_AND_ASSIGN(SimpleMenuDelegate);
@@ -495,7 +520,7 @@ TEST_F(AccessibilityEventRouterViewsTest, MenuIndexAndCountForInvisibleMenu) {
     { SimpleMenuDelegate::IDC_MENU_ITEM_3, 2, 3 },
   };
 
-  for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestCases); ++i) {
+  for (size_t i = 0; i < arraysize(kTestCases); ++i) {
     int index = 0;
     int count = 0;