diff options
author | pinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-16 18:25:18 +0000 |
---|---|---|
committer | pinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-16 18:25:18 +0000 |
commit | 7458b20b76ae96f42de87e8c47d07bb8fb304a0e (patch) | |
tree | 94c877ce3ddb88608a156deb172dcae632e42739 /chrome/browser/cocoa/cocoa_test_helper.h | |
parent | f2eefdabd9adf6c31676a401b4fc01e4e9218cbe (diff) | |
download | chromium_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.h | 59 |
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 |