| Index: chrome/browser/ui/cocoa/panels/panel_cocoa_browsertest.mm
|
| diff --git a/chrome/browser/ui/cocoa/panels/panel_cocoa_browsertest.mm b/chrome/browser/ui/cocoa/panels/panel_cocoa_browsertest.mm
|
| deleted file mode 100644
|
| index 8b60cf1f9c7cd8b80f4070e1ed3e170e13979db0..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/ui/cocoa/panels/panel_cocoa_browsertest.mm
|
| +++ /dev/null
|
| @@ -1,181 +0,0 @@
|
| -// Copyright (c) 2012 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 <Cocoa/Cocoa.h>
|
| -
|
| -#include "base/location.h"
|
| -#import "base/mac/scoped_nsobject.h"
|
| -#include "base/run_loop.h"
|
| -#include "base/single_thread_task_runner.h"
|
| -#include "base/test/test_timeouts.h"
|
| -#include "base/threading/thread_task_runner_handle.h"
|
| -#include "chrome/app/chrome_command_ids.h"
|
| -#include "chrome/browser/chrome_notification_types.h"
|
| -#include "chrome/browser/ui/browser_commands.h"
|
| -#include "chrome/browser/ui/browser_finder.h"
|
| -#include "chrome/browser/ui/browser_window.h"
|
| -#include "chrome/browser/ui/panels/base_panel_browser_test.h"
|
| -#include "chrome/browser/ui/panels/panel.h"
|
| -#include "content/public/test/test_utils.h"
|
| -
|
| -// Class that spins a run loop until an NSWindow gains key status.
|
| -@interface CocoaActivationWaiter : NSObject {
|
| - @private
|
| - base::RunLoop* runLoop_;
|
| - BOOL observed_;
|
| -}
|
| -
|
| -- (id)initWithWindow:(NSWindow*)window;
|
| -- (void)windowDidBecomeKey:(NSNotification*)notification;
|
| -- (BOOL)waitUntilActive;
|
| -
|
| -@end
|
| -
|
| -@implementation CocoaActivationWaiter
|
| -
|
| -- (id)initWithWindow:(NSWindow*)window {
|
| - EXPECT_FALSE([window isKeyWindow]);
|
| - if ((self = [super init])) {
|
| - [[NSNotificationCenter defaultCenter]
|
| - addObserver:self
|
| - selector:@selector(windowDidBecomeKey:)
|
| - name:NSWindowDidBecomeKeyNotification
|
| - object:window];
|
| - }
|
| - return self;
|
| -}
|
| -
|
| -- (void)dealloc {
|
| - [[NSNotificationCenter defaultCenter] removeObserver:self];
|
| - [super dealloc];
|
| -}
|
| -
|
| -- (void)windowDidBecomeKey:(NSNotification*)notification {
|
| - observed_ = YES;
|
| - if (runLoop_)
|
| - runLoop_->Quit();
|
| -}
|
| -
|
| -- (BOOL)waitUntilActive {
|
| - if (observed_)
|
| - return YES;
|
| -
|
| - base::RunLoop runLoop;
|
| - base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
|
| - FROM_HERE, runLoop.QuitClosure(), TestTimeouts::action_timeout());
|
| - runLoop_ = &runLoop;
|
| - runLoop.Run();
|
| - runLoop_ = nullptr;
|
| - return observed_;
|
| -}
|
| -
|
| -@end
|
| -
|
| -typedef BasePanelBrowserTest PanelCocoaBrowserTest;
|
| -
|
| -IN_PROC_BROWSER_TEST_F(PanelCocoaBrowserTest, MenuItems) {
|
| - Panel* panel = CreatePanel("Panel");
|
| -
|
| - // Close main tabbed window.
|
| - content::WindowedNotificationObserver signal(
|
| - chrome::NOTIFICATION_BROWSER_CLOSED,
|
| - content::Source<Browser>(browser()));
|
| - chrome::CloseWindow(browser());
|
| - signal.Wait();
|
| -
|
| - // There should be no browser windows.
|
| - EXPECT_EQ(0u, chrome::GetTotalBrowserCount());
|
| -
|
| - // There should be one panel.
|
| - EXPECT_EQ(1, PanelManager::GetInstance()->num_panels());
|
| -
|
| - NSMenu* mainMenu = [NSApp mainMenu];
|
| - EXPECT_TRUE(mainMenu);
|
| -
|
| - // Chrome(0) File(1) ....
|
| - // Get File submenu. It doesn't have a command id, fetch it by index.
|
| - NSMenu* fileSubmenu = [[[mainMenu itemArray] objectAtIndex:1] submenu];
|
| - EXPECT_TRUE(fileSubmenu);
|
| - [fileSubmenu update];
|
| -
|
| - // Verify the items normally enabled for "all windows closed" case are
|
| - // also enabled when there is a panel but no browser windows on the screen.
|
| - NSMenuItem* item = [fileSubmenu itemWithTag:IDC_NEW_TAB];
|
| - EXPECT_TRUE(item);
|
| - EXPECT_TRUE([item isEnabled]);
|
| -
|
| - item = [fileSubmenu itemWithTag:IDC_NEW_WINDOW];
|
| - EXPECT_TRUE(item);
|
| - EXPECT_TRUE([item isEnabled]);
|
| -
|
| - item = [fileSubmenu itemWithTag:IDC_NEW_INCOGNITO_WINDOW];
|
| - EXPECT_TRUE(item);
|
| - EXPECT_TRUE([item isEnabled]);
|
| -
|
| - NSMenu* historySubmenu = [[mainMenu itemWithTag:IDC_HISTORY_MENU] submenu];
|
| - EXPECT_TRUE(historySubmenu);
|
| - [historySubmenu update];
|
| -
|
| - // These should be disabled.
|
| - item = [historySubmenu itemWithTag:IDC_HOME];
|
| - EXPECT_TRUE(item);
|
| - EXPECT_FALSE([item isEnabled]);
|
| -
|
| - item = [historySubmenu itemWithTag:IDC_BACK];
|
| - EXPECT_TRUE(item);
|
| - EXPECT_FALSE([item isEnabled]);
|
| -
|
| - item = [historySubmenu itemWithTag:IDC_FORWARD];
|
| - EXPECT_TRUE(item);
|
| - EXPECT_FALSE([item isEnabled]);
|
| -
|
| - // 'Close Window' should be enabled because the remaining Panel is a Responder
|
| - // which implements performClose:, the 'action' of 'Close Window'.
|
| - for (NSMenuItem *i in [fileSubmenu itemArray]) {
|
| - if ([i action] == @selector(performClose:)) {
|
| - item = i;
|
| - break;
|
| - }
|
| - }
|
| - EXPECT_TRUE(item);
|
| - EXPECT_TRUE([item isEnabled]);
|
| -
|
| - panel->Close();
|
| -}
|
| -
|
| -// Test that panels do not become active when closing a window, even when a
|
| -// panel is otherwise the topmost window.
|
| -IN_PROC_BROWSER_TEST_F(PanelCocoaBrowserTest, InactivePanelsNotActivated) {
|
| - // Note CreateDockedPanel() sets wait_for_fully_created and SHOW_AS_ACTIVE,
|
| - // so the following spins a run loop until the respective panel is activated.
|
| - Panel* docked_panel_1 = CreateDockedPanel("Panel1", gfx::Rect());
|
| - EXPECT_TRUE([docked_panel_1->GetNativeWindow() isKeyWindow]);
|
| -
|
| - // Activate the browser. Otherwise closing the second panel will correctly
|
| - // raise the first panel since panels are allowed to become key if they were
|
| - // actually the most recently focused window (as opposed to being merely the
|
| - // topmost window on the z-order stack).
|
| - NSWindow* browser_window = browser()->window()->GetNativeWindow();
|
| - base::scoped_nsobject<CocoaActivationWaiter> waiter(
|
| - [[CocoaActivationWaiter alloc] initWithWindow:browser_window]);
|
| - browser()->window()->Activate();
|
| - EXPECT_TRUE([waiter waitUntilActive]);
|
| -
|
| - // Creating a second panel will activate it (and make it topmost).
|
| - Panel* docked_panel_2 = CreateDockedPanel("Panel2", gfx::Rect());
|
| - EXPECT_TRUE([docked_panel_2->GetNativeWindow() isKeyWindow]);
|
| -
|
| - // Verify the assumptions that the panels are actually topmost.
|
| - EXPECT_EQ(docked_panel_2->GetNativeWindow(),
|
| - [[NSApp orderedWindows] objectAtIndex:0]);
|
| - EXPECT_EQ(docked_panel_1->GetNativeWindow(),
|
| - [[NSApp orderedWindows] objectAtIndex:1]);
|
| -
|
| - // Close the second panel and wait for the browser to become active.
|
| - waiter.reset([[CocoaActivationWaiter alloc] initWithWindow:browser_window]);
|
| - docked_panel_2->Close();
|
| -
|
| - EXPECT_TRUE([waiter waitUntilActive]);
|
| - EXPECT_TRUE([browser_window isKeyWindow]);
|
| -}
|
|
|