summaryrefslogtreecommitdiffstats
path: root/chrome/browser/cocoa/cocoa_test_helper.h
diff options
context:
space:
mode:
authorpinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-16 18:25:18 +0000
committerpinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-16 18:25:18 +0000
commit7458b20b76ae96f42de87e8c47d07bb8fb304a0e (patch)
tree94c877ce3ddb88608a156deb172dcae632e42739 /chrome/browser/cocoa/cocoa_test_helper.h
parentf2eefdabd9adf6c31676a401b4fc01e4e9218cbe (diff)
downloadchromium_src-7458b20b76ae96f42de87e8c47d07bb8fb304a0e.zip
chromium_src-7458b20b76ae96f42de87e8c47d07bb8fb304a0e.tar.gz
chromium_src-7458b20b76ae96f42de87e8c47d07bb8fb304a0e.tar.bz2
Add a test helper to pull out some common code. Add a test for tab controller. Don't dead-strip un-referenced objective-C code in the unit_test target. Use the appropriate bundle when loading the tab nib. (take two, most of this was backed out earlier).
Review URL: http://codereview.chromium.org/77004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@13859 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/cocoa/cocoa_test_helper.h')
-rw-r--r--chrome/browser/cocoa/cocoa_test_helper.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/chrome/browser/cocoa/cocoa_test_helper.h b/chrome/browser/cocoa/cocoa_test_helper.h
new file mode 100644
index 0000000..04fd2de5
--- /dev/null
+++ b/chrome/browser/cocoa/cocoa_test_helper.h
@@ -0,0 +1,59 @@
+// 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. If your test wants one, it can derrive from PlatformTest instead of
+// testing::Test.
+
+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