diff options
author | awalker@google.com <awalker@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-16 15:30:46 +0000 |
---|---|---|
committer | awalker@google.com <awalker@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-16 15:30:46 +0000 |
commit | 5d7dc97569e6c0cb0f5f794d67d47df700f564b6 (patch) | |
tree | ce997624eb037204f837353198b597e6df68b933 /chrome/browser | |
parent | beb3f472cb71a4ba25968a35b1c3dfeca59fc541 (diff) | |
download | chromium_src-5d7dc97569e6c0cb0f5f794d67d47df700f564b6.zip chromium_src-5d7dc97569e6c0cb0f5f794d67d47df700f564b6.tar.gz chromium_src-5d7dc97569e6c0cb0f5f794d67d47df700f564b6.tar.bz2 |
Reverting 13839,13838.
Review URL: http://codereview.chromium.org/67220
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@13840 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r-- | chrome/browser/cocoa/cocoa_test_helper.h | 58 | ||||
-rw-r--r-- | chrome/browser/cocoa/tab_controller.h | 2 | ||||
-rw-r--r-- | chrome/browser/cocoa/tab_controller.mm | 3 | ||||
-rw-r--r-- | chrome/browser/cocoa/tab_controller_unittest.mm | 180 |
4 files changed, 2 insertions, 241 deletions
diff --git a/chrome/browser/cocoa/cocoa_test_helper.h b/chrome/browser/cocoa/cocoa_test_helper.h deleted file mode 100644 index 54d56b8..0000000 --- a/chrome/browser/cocoa/cocoa_test_helper.h +++ /dev/null @@ -1,58 +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. - -#ifndef CHROME_BROWSER_COCOA_COCOA_TEST_HELPER -#define CHROME_BROWSER_COCOA_COCOA_TEST_HELPER - -#import <Cocoa/Cocoa.h> - -#include "base/file_path.h" -#include "base/mac_util.h" -#include "base/path_service.h" - -#if defined(GOOGLE_CHROME_BUILD) -#define APP_NAME "Chrome.app" -#else -#define APP_NAME "Chromium.app" -#endif - -// A class that initializes Cocoa and sets up resources for many of our -// Cocoa controller unit tests. It does several key things: -// - Creates and displays an empty Cocoa window for views to live in -// - Loads the appropriate bundle so nib loading works. When loading the -// nib in the class being tested, your must use |mac_util::MainAppBundle()| -// as the bundle. If you do not specify a bundle, your test will likely -// fail. -// It currently does not create an autorelease pool, though that can easily be -// added. - -class CocoaTestHelper { - public: - CocoaTestHelper() { - // Look in the Chromium app bundle for resources. - FilePath path; - PathService::Get(base::DIR_EXE, &path); - path = path.AppendASCII(APP_NAME); - mac_util::SetOverrideAppBundlePath(path); - - // Bootstrap Cocoa. It's very unhappy without this. - [NSApplication sharedApplication]; - - // Create a window. - NSRect frame = NSMakeRect(0, 0, 800, 600); - window_.reset([[NSWindow alloc] initWithContentRect:frame - styleMask:0 - backing:NSBackingStoreBuffered - defer:NO]); - [window_ orderFront:nil]; - } - - // Access the Cocoa window created for the test. - NSWindow* window() const { return window_.get(); } - - private: - scoped_nsobject<NSWindow> window_; -}; - -#endif // CHROME_BROWSER_COCOA_COCOA_TEST_HELPER diff --git a/chrome/browser/cocoa/tab_controller.h b/chrome/browser/cocoa/tab_controller.h index 45d93ab..82f3bb5 100644 --- a/chrome/browser/cocoa/tab_controller.h +++ b/chrome/browser/cocoa/tab_controller.h @@ -23,7 +23,7 @@ BOOL loading_; NSImage *image_; id<TabControllerTarget> target_; // weak, where actions are sent - SEL action_; // selector sent when tab is selected by clicking + SEL action_; // selector sent when tab is seleted by clicking } @property(retain, nonatomic) NSImage *image; diff --git a/chrome/browser/cocoa/tab_controller.mm b/chrome/browser/cocoa/tab_controller.mm index e54931e..09eb5c6 100644 --- a/chrome/browser/cocoa/tab_controller.mm +++ b/chrome/browser/cocoa/tab_controller.mm @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "base/mac_util.h" #import "chrome/browser/cocoa/tab_controller.h" #import "chrome/browser/cocoa/tab_controller_target.h" @@ -21,7 +20,7 @@ } - (id)init { - self = [super initWithNibName:@"TabView" bundle:mac_util::MainAppBundle()]; + self = [super initWithNibName:@"TabView" bundle:nil]; if (self != nil) { [self setImage:[NSImage imageNamed:@"nav"]]; } diff --git a/chrome/browser/cocoa/tab_controller_unittest.mm b/chrome/browser/cocoa/tab_controller_unittest.mm deleted file mode 100644 index d1f815b..0000000 --- a/chrome/browser/cocoa/tab_controller_unittest.mm +++ /dev/null @@ -1,180 +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> - -#include "base/scoped_nsautorelease_pool.h" -#import "base/scoped_nsobject.h" -#import "chrome/browser/cocoa/tab_controller.h" -#import "chrome/browser/cocoa/tab_controller_target.h" -#include "chrome/browser/cocoa/cocoa_test_helper.h" -#include "testing/gtest/include/gtest/gtest.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 = [[NSApplication sharedApplication] 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]; -} -@end - -namespace { - -class TabControllerTest : public testing::Test { - public: - TabControllerTest() { - } - - CocoaTestHelper cocoa_helper_; -}; - -// Tests creating the controller, sticking it in a window, and removing it. -TEST_F(TabControllerTest, Creation) { - NSWindow* window = cocoa_helper_.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] 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 = cocoa_helper_.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 = cocoa_helper_.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 setting the |loading| property via code. -TEST_F(TabControllerTest, Loading) { - NSWindow* window = cocoa_helper_.window(); - scoped_nsobject<TabController> controller([[TabController alloc] init]); - [[window contentView] addSubview:[controller view]]; - - EXPECT_FALSE([controller loading]); - [controller setLoading:YES]; - EXPECT_TRUE([controller loading]); - - [[controller view] removeFromSuperview]; -} - -// Tests selecting the tab with the mouse click and ensuring the target/action -// get called. -// TODO(pinkerton): It's yucky that TabView bakes in the dragging so that we -// can't test this class w/out lots of extra effort. When cole finishes the -// rewrite, we should move all that logic out into a separate controller which -// we can dependency-inject/mock so it has very simple click behavior for unit -// testing. -TEST_F(TabControllerTest, UserSelection) { - NSWindow* window = cocoa_helper_.window(); - // The dragging code in TabView makes heavy use of autorelease pools. We - // need to create our own here otherwise the window stays active for the - // duration of the entire test. - base::ScopedNSAutoreleasePool pool; - - // 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 = [[NSApplication sharedApplication] 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]; -} - -} // namespace |