Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2992)

Unified Diff: chrome/browser/ui/cocoa/tab_controller_unittest.mm

Issue 6362007: [Mac] Organize all tab/tab strip files into chrome/browser/ui/cocoa/tabs/.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/cocoa/tab_controller_target.h ('k') | chrome/browser/ui/cocoa/tab_strip_controller.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/cocoa/tab_controller_unittest.mm
===================================================================
--- chrome/browser/ui/cocoa/tab_controller_unittest.mm (revision 71805)
+++ chrome/browser/ui/cocoa/tab_controller_unittest.mm (working copy)
@@ -1,333 +0,0 @@
-// Copyright (c) 2009 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>
-
-#import "base/scoped_nsobject.h"
-#import "chrome/browser/ui/cocoa/tab_controller.h"
-#import "chrome/browser/ui/cocoa/tab_controller_target.h"
-#include "chrome/browser/ui/cocoa/cocoa_test_helper.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#import "testing/gtest_mac.h"
-#include "testing/platform_test.h"
-
-// Implements the target interface for the tab, which gets sent messages when
-// the tab is clicked on by the user and when its close box is clicked.
-@interface TabControllerTestTarget : NSObject<TabControllerTarget> {
- @private
- bool selected_;
- bool closed_;
-}
-- (bool)selected;
-- (bool)closed;
-@end
-
-@implementation TabControllerTestTarget
-- (bool)selected {
- return selected_;
-}
-- (bool)closed {
- return closed_;
-}
-- (void)selectTab:(id)sender {
- selected_ = true;
-}
-- (void)closeTab:(id)sender {
- closed_ = true;
-}
-- (void)mouseTimer:(NSTimer*)timer {
- // Fire the mouseUp to break the TabView drag loop.
- NSEvent* current = [NSApp currentEvent];
- NSWindow* window = [timer userInfo];
- NSEvent* up = [NSEvent mouseEventWithType:NSLeftMouseUp
- location:[current locationInWindow]
- modifierFlags:0
- timestamp:[current timestamp]
- windowNumber:[window windowNumber]
- context:nil
- eventNumber:0
- clickCount:1
- pressure:1.0];
- [window postEvent:up atStart:YES];
-}
-- (void)commandDispatch:(TabStripModel::ContextMenuCommand)command
- forController:(TabController*)controller {
-}
-- (BOOL)isCommandEnabled:(TabStripModel::ContextMenuCommand)command
- forController:(TabController*)controller {
- return NO;
-}
-@end
-
-namespace {
-
-CGFloat LeftMargin(NSRect superFrame, NSRect subFrame) {
- return NSMinX(subFrame) - NSMinX(superFrame);
-}
-
-CGFloat RightMargin(NSRect superFrame, NSRect subFrame) {
- return NSMaxX(superFrame) - NSMaxX(subFrame);
-}
-
-// The dragging code in TabView makes heavy use of autorelease pools so
-// inherit from CocoaTest to have one created for us.
-class TabControllerTest : public CocoaTest {
- public:
- TabControllerTest() { }
-};
-
-// Tests creating the controller, sticking it in a window, and removing it.
-TEST_F(TabControllerTest, Creation) {
- NSWindow* window = test_window();
- scoped_nsobject<TabController> controller([[TabController alloc] init]);
- [[window contentView] addSubview:[controller view]];
- EXPECT_TRUE([controller tabView]);
- EXPECT_EQ([[controller view] window], window);
- [[controller view] display]; // Test drawing to ensure nothing leaks/crashes.
- [[controller view] removeFromSuperview];
-}
-
-// Tests sending it a close message and ensuring that the target/action get
-// called. Mimics the user clicking on the close button in the tab.
-TEST_F(TabControllerTest, Close) {
- NSWindow* window = test_window();
- scoped_nsobject<TabController> controller([[TabController alloc] init]);
- [[window contentView] addSubview:[controller view]];
-
- scoped_nsobject<TabControllerTestTarget> target(
- [[TabControllerTestTarget alloc] init]);
- EXPECT_FALSE([target closed]);
- [controller setTarget:target];
- EXPECT_EQ(target.get(), [controller target]);
-
- [controller closeTab:nil];
- EXPECT_TRUE([target closed]);
-
- [[controller view] removeFromSuperview];
-}
-
-// Tests setting the |selected| property via code.
-TEST_F(TabControllerTest, APISelection) {
- NSWindow* window = test_window();
- scoped_nsobject<TabController> controller([[TabController alloc] init]);
- [[window contentView] addSubview:[controller view]];
-
- EXPECT_FALSE([controller selected]);
- [controller setSelected:YES];
- EXPECT_TRUE([controller selected]);
-
- [[controller view] removeFromSuperview];
-}
-
-// Tests that setting the title of a tab sets the tooltip as well.
-TEST_F(TabControllerTest, ToolTip) {
- NSWindow* window = test_window();
-
- scoped_nsobject<TabController> controller([[TabController alloc] init]);
- [[window contentView] addSubview:[controller view]];
-
- EXPECT_TRUE([[controller toolTip] length] == 0);
- NSString *tooltip_string = @"Some text to use as a tab title";
- [controller setTitle:tooltip_string];
- EXPECT_NSEQ(tooltip_string, [controller toolTip]);
-}
-
-// Tests setting the |loading| property via code.
-TEST_F(TabControllerTest, Loading) {
- NSWindow* window = test_window();
- scoped_nsobject<TabController> controller([[TabController alloc] init]);
- [[window contentView] addSubview:[controller view]];
-
- EXPECT_EQ(kTabDone, [controller loadingState]);
- [controller setLoadingState:kTabWaiting];
- EXPECT_EQ(kTabWaiting, [controller loadingState]);
- [controller setLoadingState:kTabLoading];
- EXPECT_EQ(kTabLoading, [controller loadingState]);
- [controller setLoadingState:kTabDone];
- EXPECT_EQ(kTabDone, [controller loadingState]);
-
- [[controller view] removeFromSuperview];
-}
-
-// Tests selecting the tab with the mouse click and ensuring the target/action
-// get called.
-TEST_F(TabControllerTest, UserSelection) {
- NSWindow* window = test_window();
-
- // Create a tab at a known location in the window that we can click on
- // to activate selection.
- scoped_nsobject<TabController> controller([[TabController alloc] init]);
- [[window contentView] addSubview:[controller view]];
- NSRect frame = [[controller view] frame];
- frame.size.width = [TabController minTabWidth];
- frame.origin = NSMakePoint(0, 0);
- [[controller view] setFrame:frame];
-
- // Set the target and action.
- scoped_nsobject<TabControllerTestTarget> target(
- [[TabControllerTestTarget alloc] init]);
- EXPECT_FALSE([target selected]);
- [controller setTarget:target];
- [controller setAction:@selector(selectTab:)];
- EXPECT_EQ(target.get(), [controller target]);
- EXPECT_EQ(@selector(selectTab:), [controller action]);
-
- // In order to track a click, we have to fake a mouse down and a mouse
- // up, but the down goes into a tight drag loop. To break the loop, we have
- // to fire a timer that sends a mouse up event while the "drag" is ongoing.
- [NSTimer scheduledTimerWithTimeInterval:0.1
- target:target.get()
- selector:@selector(mouseTimer:)
- userInfo:window
- repeats:NO];
- NSEvent* current = [NSApp currentEvent];
- NSPoint click_point = NSMakePoint(frame.size.width / 2,
- frame.size.height / 2);
- NSEvent* down = [NSEvent mouseEventWithType:NSLeftMouseDown
- location:click_point
- modifierFlags:0
- timestamp:[current timestamp]
- windowNumber:[window windowNumber]
- context:nil
- eventNumber:0
- clickCount:1
- pressure:1.0];
- [[controller view] mouseDown:down];
-
- // Check our target was told the tab got selected.
- EXPECT_TRUE([target selected]);
-
- [[controller view] removeFromSuperview];
-}
-
-TEST_F(TabControllerTest, IconCapacity) {
- NSWindow* window = test_window();
- scoped_nsobject<TabController> controller([[TabController alloc] init]);
- [[window contentView] addSubview:[controller view]];
- int cap = [controller iconCapacity];
- EXPECT_GE(cap, 1);
-
- NSRect frame = [[controller view] frame];
- frame.size.width += 500;
- [[controller view] setFrame:frame];
- int newcap = [controller iconCapacity];
- EXPECT_GT(newcap, cap);
-}
-
-TEST_F(TabControllerTest, ShouldShowIcon) {
- NSWindow* window = test_window();
- scoped_nsobject<TabController> controller([[TabController alloc] init]);
- [[window contentView] addSubview:[controller view]];
- int cap = [controller iconCapacity];
- EXPECT_GT(cap, 0);
-
- // Tab is minimum width, both icon and close box should be hidden.
- NSRect frame = [[controller view] frame];
- frame.size.width = [TabController minTabWidth];
- [[controller view] setFrame:frame];
- EXPECT_FALSE([controller shouldShowIcon]);
- EXPECT_FALSE([controller shouldShowCloseButton]);
-
- // Setting the icon when tab is at min width should not show icon (bug 18359).
- scoped_nsobject<NSView> newIcon(
- [[NSView alloc] initWithFrame:NSMakeRect(0, 0, 16, 16)]);
- [controller setIconView:newIcon.get()];
- EXPECT_TRUE([newIcon isHidden]);
-
- // Tab is at selected minimum width. Since it's selected, the close box
- // should be visible.
- [controller setSelected:YES];
- frame = [[controller view] frame];
- frame.size.width = [TabController minSelectedTabWidth];
- [[controller view] setFrame:frame];
- EXPECT_FALSE([controller shouldShowIcon]);
- EXPECT_TRUE([newIcon isHidden]);
- EXPECT_TRUE([controller shouldShowCloseButton]);
-
- // Test expanding the tab to max width and ensure the icon and close box
- // get put back, even when de-selected.
- frame.size.width = [TabController maxTabWidth];
- [[controller view] setFrame:frame];
- EXPECT_TRUE([controller shouldShowIcon]);
- EXPECT_FALSE([newIcon isHidden]);
- EXPECT_TRUE([controller shouldShowCloseButton]);
- [controller setSelected:NO];
- EXPECT_TRUE([controller shouldShowIcon]);
- EXPECT_TRUE([controller shouldShowCloseButton]);
-
- cap = [controller iconCapacity];
- EXPECT_GT(cap, 0);
-}
-
-TEST_F(TabControllerTest, Menu) {
- NSWindow* window = test_window();
- scoped_nsobject<TabController> controller([[TabController alloc] init]);
- [[window contentView] addSubview:[controller view]];
- int cap = [controller iconCapacity];
- EXPECT_GT(cap, 0);
-
- // Asking the view for its menu should yield a valid menu.
- NSMenu* menu = [[controller view] menu];
- EXPECT_TRUE(menu);
- EXPECT_GT([menu numberOfItems], 0);
-}
-
-// Tests that the title field is correctly positioned and sized when the
-// view is resized.
-TEST_F(TabControllerTest, TitleViewLayout) {
- NSWindow* window = test_window();
-
- scoped_nsobject<TabController> controller([[TabController alloc] init]);
- [[window contentView] addSubview:[controller view]];
- NSRect tabFrame = [[controller view] frame];
- tabFrame.size.width = [TabController maxTabWidth];
- [[controller view] setFrame:tabFrame];
-
- const NSRect originalTabFrame = [[controller view] frame];
- const NSRect originalIconFrame = [[controller iconView] frame];
- const NSRect originalCloseFrame = [[controller closeButton] frame];
- const NSRect originalTitleFrame = [[controller titleView] frame];
-
- // Sanity check the start state.
- EXPECT_FALSE([[controller iconView] isHidden]);
- EXPECT_FALSE([[controller closeButton] isHidden]);
- EXPECT_GT(NSWidth([[controller view] frame]),
- NSWidth([[controller titleView] frame]));
-
- // Resize the tab so that that the it shrinks.
- tabFrame.size.width = [TabController minTabWidth];
- [[controller view] setFrame:tabFrame];
-
- // The icon view and close button should be hidden and the title view should
- // be resize to take up their space.
- EXPECT_TRUE([[controller iconView] isHidden]);
- EXPECT_TRUE([[controller closeButton] isHidden]);
- EXPECT_GT(NSWidth([[controller view] frame]),
- NSWidth([[controller titleView] frame]));
- EXPECT_EQ(LeftMargin(originalTabFrame, originalIconFrame),
- LeftMargin([[controller view] frame],
- [[controller titleView] frame]));
- EXPECT_EQ(RightMargin(originalTabFrame, originalCloseFrame),
- RightMargin([[controller view] frame],
- [[controller titleView] frame]));
-
- // Resize the tab so that that the it grows.
- tabFrame.size.width = [TabController maxTabWidth] * 0.75;
- [[controller view] setFrame:tabFrame];
-
- // The icon view and close button should be visible again and the title view
- // should be resized to make room for them.
- EXPECT_FALSE([[controller iconView] isHidden]);
- EXPECT_FALSE([[controller closeButton] isHidden]);
- EXPECT_GT(NSWidth([[controller view] frame]),
- NSWidth([[controller titleView] frame]));
- EXPECT_EQ(LeftMargin(originalTabFrame, originalTitleFrame),
- LeftMargin([[controller view] frame],
- [[controller titleView] frame]));
- EXPECT_EQ(RightMargin(originalTabFrame, originalTitleFrame),
- RightMargin([[controller view] frame],
- [[controller titleView] frame]));
-}
-
-} // namespace
« no previous file with comments | « chrome/browser/ui/cocoa/tab_controller_target.h ('k') | chrome/browser/ui/cocoa/tab_strip_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698