summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--build/common.gypi6
-rw-r--r--chrome/browser/cocoa/cocoa_test_helper.h58
-rw-r--r--chrome/browser/cocoa/tab_controller.h2
-rw-r--r--chrome/browser/cocoa/tab_controller.mm3
-rw-r--r--chrome/browser/cocoa/tab_controller_unittest.mm180
-rw-r--r--chrome/chrome.gyp2
6 files changed, 7 insertions, 244 deletions
diff --git a/build/common.gypi b/build/common.gypi
index 087c964..6a67a24 100644
--- a/build/common.gypi
+++ b/build/common.gypi
@@ -293,8 +293,10 @@
},
'target_conditions': [
['_type!="static_library"', {
- 'xcode_settings': {'OTHER_LDFLAGS': ['-Wl,-search_paths_first',
- '-Wl,-ObjC']},
+ 'xcode_settings': {'OTHER_LDFLAGS': ['-Wl,-search_paths_first']},
+ }],
+ ['_mac_bundle', {
+ 'xcode_settings': {'OTHER_LDFLAGS': ['-Wl,-ObjC']},
}],
['_type=="executable"', {
'postbuilds': [
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
diff --git a/chrome/chrome.gyp b/chrome/chrome.gyp
index a7e64d1..4f20c80 100644
--- a/chrome/chrome.gyp
+++ b/chrome/chrome.gyp
@@ -2091,6 +2091,7 @@
'..',
],
'sources': [
+ '../third_party/GTM/AppKit/GTMNSBezierPath+RoundRect.m',
'app/breakpad_mac.mm',
# All unittests in browser, common, and renderer.
'browser/autocomplete/autocomplete_unittest.cc',
@@ -2120,7 +2121,6 @@
'browser/cocoa/command_observer_bridge_unittest.mm',
'browser/cocoa/location_bar_view_mac_unittest.mm',
'browser/cocoa/status_bubble_mac_unittest.mm',
- 'browser/cocoa/tab_controller_unittest.mm',
'browser/command_updater_unittest.cc',
'browser/debugger/devtools_manager_unittest.cc',
'browser/dom_ui/dom_ui_unittest.cc',