summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorjackhou <jackhou@chromium.org>2015-08-06 22:17:21 -0700
committerCommit bot <commit-bot@chromium.org>2015-08-07 05:18:11 +0000
commit24869918ffc61b2a29e7a8b23d9120e13c3404fd (patch)
treece0dc5be1640cac5034ab132bae1592439fe31e7 /chrome
parente07acee850f48a5565c875e8806aaa126d35d22e (diff)
downloadchromium_src-24869918ffc61b2a29e7a8b23d9120e13c3404fd.zip
chromium_src-24869918ffc61b2a29e7a8b23d9120e13c3404fd.tar.gz
chromium_src-24869918ffc61b2a29e7a8b23d9120e13c3404fd.tar.bz2
[MacViews] Fix AccessiblePaneViewTest.SetPaneFocusAndRestore.
Fake out key status to make Widget::Activate/IsActive work in the unit test. If-def out the part that requires Widget::Deactivate as it's not supported on Mac. The test was also failing because Mac checks WidgetDelegate::CanActivate() when activating whereas NativeWidgetAura defers this to `ShouldActivate` which is only checked by wm::BaseFocusRules. Also improve c/b/ui/test/scoped_fake_nswindow_main_status to handle key status as well and move it to ui/base/test/. BUG=378134 Review URL: https://codereview.chromium.org/1268293002 Cr-Commit-Position: refs/heads/master@{#342289}
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac_browsertest.mm23
-rw-r--r--chrome/browser/ui/cocoa/apps/native_app_window_cocoa_browsertest.mm5
-rw-r--r--chrome/browser/ui/test/scoped_fake_nswindow_main_status.h32
-rw-r--r--chrome/browser/ui/test/scoped_fake_nswindow_main_status.mm47
-rw-r--r--chrome/chrome_tests.gypi2
5 files changed, 12 insertions, 97 deletions
diff --git a/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac_browsertest.mm b/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac_browsertest.mm
index 5959808..fb3302e 100644
--- a/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac_browsertest.mm
+++ b/chrome/browser/ui/cocoa/apps/app_shim_menu_controller_mac_browsertest.mm
@@ -19,13 +19,13 @@
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser_iterator.h"
#include "chrome/browser/ui/browser_window.h"
-#import "chrome/browser/ui/test/scoped_fake_nswindow_main_status.h"
#include "chrome/common/chrome_switches.h"
#include "extensions/browser/app_window/app_window_registry.h"
#include "extensions/browser/app_window/native_app_window.h"
#include "extensions/browser/uninstall_reason.h"
#include "extensions/common/extension.h"
#include "extensions/test/extension_test_message_listener.h"
+#import "ui/base/test/scoped_fake_nswindow_focus.h"
namespace {
@@ -77,7 +77,7 @@ class AppShimMenuControllerBrowserTest
void CheckHasAppMenus(const extensions::Extension* app) const {
const int kExtraTopLevelItems = 4;
NSArray* item_array = [[NSApp mainMenu] itemArray];
- EXPECT_EQ(initial_menu_item_count_ + kExtraTopLevelItems,
+ ASSERT_EQ(initial_menu_item_count_ + kExtraTopLevelItems,
[item_array count]);
for (NSUInteger i = 0; i < initial_menu_item_count_; ++i)
EXPECT_TRUE([[item_array objectAtIndex:i] isHidden]);
@@ -186,11 +186,8 @@ IN_PROC_BROWSER_TEST_F(AppShimMenuControllerBrowserTest,
extensions::AppWindow* app_1_app_window = FirstWindowForApp(app_1_);
{
- ScopedFakeNSWindowMainStatus app_1_is_main(
- app_1_app_window->GetNativeWindow());
- [[NSNotificationCenter defaultCenter]
- postNotificationName:NSWindowDidBecomeMainNotification
- object:app_1_app_window->GetNativeWindow()];
+ ui::test::ScopedFakeNSWindowFocus fake_focus;
+ [app_1_app_window->GetNativeWindow() makeMainWindow];
CheckHasAppMenus(app_1_);
// Closing a background window without focusing it should not change menus.
@@ -200,10 +197,9 @@ IN_PROC_BROWSER_TEST_F(AppShimMenuControllerBrowserTest,
postNotificationName:NSWindowWillCloseNotification
object:chrome_window->GetNativeWindow()];
CheckHasAppMenus(app_1_);
+
+ // |fake_focus| going out of scope sends NSWindowWillResignMainNotification.
}
- [[NSNotificationCenter defaultCenter]
- postNotificationName:NSWindowDidResignMainNotification
- object:app_1_app_window->GetNativeWindow()];
app_1_app_window->GetBaseWindow()->Close();
CheckNoAppMenus();
}
@@ -250,10 +246,9 @@ IN_PROC_BROWSER_TEST_F(AppShimMenuControllerBrowserTest,
FirstWindowForApp(app_2_)->GetBaseWindow()->Close();
chrome::BrowserIterator()->window()->Close();
NSWindow* app_1_window = FirstWindowForApp(app_1_)->GetNativeWindow();
- [[NSNotificationCenter defaultCenter]
- postNotificationName:NSWindowDidBecomeMainNotification
- object:app_1_window];
- ScopedFakeNSWindowMainStatus app_1_is_main(app_1_window);
+
+ ui::test::ScopedFakeNSWindowFocus fake_focus;
+ [app_1_window makeMainWindow];
CheckHasAppMenus(app_1_);
ExtensionService::UninstallExtensionHelper(
diff --git a/chrome/browser/ui/cocoa/apps/native_app_window_cocoa_browsertest.mm b/chrome/browser/ui/cocoa/apps/native_app_window_cocoa_browsertest.mm
index ce248ad..22f98a3 100644
--- a/chrome/browser/ui/cocoa/apps/native_app_window_cocoa_browsertest.mm
+++ b/chrome/browser/ui/cocoa/apps/native_app_window_cocoa_browsertest.mm
@@ -18,7 +18,6 @@
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/extensions/app_launch_params.h"
#include "chrome/browser/ui/extensions/application_launch.h"
-#import "chrome/browser/ui/test/scoped_fake_nswindow_main_status.h"
#include "chrome/common/chrome_switches.h"
#include "content/public/browser/notification_service.h"
#include "content/public/test/test_utils.h"
@@ -28,6 +27,7 @@
#include "testing/gmock/include/gmock/gmock.h"
#import "testing/gtest_mac.h"
#import "ui/base/test/nswindow_fullscreen_notification_waiter.h"
+#import "ui/base/test/scoped_fake_nswindow_focus.h"
#import "ui/base/test/scoped_fake_nswindow_fullscreen.h"
#import "ui/base/test/windowed_nsnotification_observer.h"
#import "ui/gfx/mac/nswindow_frame_controls.h"
@@ -699,7 +699,8 @@ IN_PROC_BROWSER_TEST_P(NativeAppWindowCocoaBrowserTest, FrameColor) {
EXPECT_NEAR(expected_components[1], color_components[1], 0.01);
EXPECT_NEAR(expected_components[2], color_components[2], 0.01);
- ScopedFakeNSWindowMainStatus fake_main(ns_window);
+ ui::test::ScopedFakeNSWindowFocus fake_focus;
+ [ns_window makeMainWindow];
bitmap = ScreenshotNSWindow(ns_window);
// The window is now active so it should be red (#FF0000).
diff --git a/chrome/browser/ui/test/scoped_fake_nswindow_main_status.h b/chrome/browser/ui/test/scoped_fake_nswindow_main_status.h
deleted file mode 100644
index 0d4df98..0000000
--- a/chrome/browser/ui/test/scoped_fake_nswindow_main_status.h
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_UI_TEST_SCOPED_FAKE_NSWINDOW_MAIN_STATUS_H_
-#define CHROME_BROWSER_UI_TEST_SCOPED_FAKE_NSWINDOW_MAIN_STATUS_H_
-
-#include "base/memory/scoped_ptr.h"
-
-namespace base {
-namespace mac {
-class ScopedObjCClassSwizzler;
-}
-}
-
-@class NSWindow;
-
-// Simulates a particular NSWindow to report YES for [NSWindow isMainWindow].
-// This allows test coverage of code relying on window focus changes without
-// resorting to an interactive_ui_test.
-class ScopedFakeNSWindowMainStatus {
- public:
- explicit ScopedFakeNSWindowMainStatus(NSWindow* window);
- ~ScopedFakeNSWindowMainStatus();
-
- private:
- scoped_ptr<base::mac::ScopedObjCClassSwizzler> swizzler_;
-
- DISALLOW_COPY_AND_ASSIGN(ScopedFakeNSWindowMainStatus);
-};
-
-#endif // CHROME_BROWSER_UI_TEST_SCOPED_FAKE_NSWINDOW_MAIN_STATUS_H_
diff --git a/chrome/browser/ui/test/scoped_fake_nswindow_main_status.mm b/chrome/browser/ui/test/scoped_fake_nswindow_main_status.mm
deleted file mode 100644
index 0f2c27d..0000000
--- a/chrome/browser/ui/test/scoped_fake_nswindow_main_status.mm
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#import "chrome/browser/ui/test/scoped_fake_nswindow_main_status.h"
-
-#import <Cocoa/Cocoa.h>
-
-#import "base/mac/foundation_util.h"
-#import "base/mac/scoped_objc_class_swizzler.h"
-
-namespace {
-
-NSWindow* g_fake_main_window = nil;
-
-}
-
-// Donates a testing implementation of [NSWindow isMainWindow].
-@interface IsMainWindowDonorForWindow : NSObject
-@end
-
-@implementation IsMainWindowDonorForWindow
-- (BOOL)isMainWindow {
- NSWindow* selfAsWindow = base::mac::ObjCCastStrict<NSWindow>(self);
- return selfAsWindow == g_fake_main_window;
-}
-@end
-
-ScopedFakeNSWindowMainStatus::ScopedFakeNSWindowMainStatus(NSWindow* window)
- : swizzler_(new base::mac::ScopedObjCClassSwizzler(
- [NSWindow class],
- [IsMainWindowDonorForWindow class],
- @selector(isMainWindow))) {
- DCHECK(!g_fake_main_window);
- g_fake_main_window = window;
- [[NSNotificationCenter defaultCenter]
- postNotificationName:NSWindowDidBecomeMainNotification
- object:g_fake_main_window];
-}
-
-ScopedFakeNSWindowMainStatus::~ScopedFakeNSWindowMainStatus() {
- NSWindow* window = g_fake_main_window;
- g_fake_main_window = nil;
- [[NSNotificationCenter defaultCenter]
- postNotificationName:NSWindowDidResignMainNotification
- object:window];
-}
diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi
index 9262d92..041ef6c 100644
--- a/chrome/chrome_tests.gypi
+++ b/chrome/chrome_tests.gypi
@@ -515,8 +515,6 @@
'browser/ui/sync/profile_signin_confirmation_helper_browsertest.cc',
'browser/ui/tab_modal_confirm_dialog_browsertest.cc',
'browser/ui/tab_modal_confirm_dialog_browsertest.h',
- 'browser/ui/test/scoped_fake_nswindow_main_status.h',
- 'browser/ui/test/scoped_fake_nswindow_main_status.mm',
'browser/ui/toolbar/browser_actions_bar_browsertest.cc',
'browser/ui/toolbar/browser_actions_bar_browsertest.h',
'browser/ui/toolbar/component_toolbar_actions_browsertest.cc',