summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_apitest.h
diff options
context:
space:
mode:
authorerikkay@chromium.org <erikkay@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-17 20:57:14 +0000
committererikkay@chromium.org <erikkay@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-17 20:57:14 +0000
commit25fd1b2ecec6dbbdf281e954b991644f155e9a35 (patch)
treed5d368234e4fbf7494512f70478c162c4de9c987 /chrome/browser/extensions/extension_apitest.h
parent4154786bb3f8655d0a9cb6dee37df90ff735c8e7 (diff)
downloadchromium_src-25fd1b2ecec6dbbdf281e954b991644f155e9a35.zip
chromium_src-25fd1b2ecec6dbbdf281e954b991644f155e9a35.tar.gz
chromium_src-25fd1b2ecec6dbbdf281e954b991644f155e9a35.tar.bz2
An initial pass at structure to do end-to-end extension API tests. I'll work on actually fleshing out some tests in the next CL.
Review URL: http://codereview.chromium.org/171032 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23577 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_apitest.h')
-rw-r--r--chrome/browser/extensions/extension_apitest.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/chrome/browser/extensions/extension_apitest.h b/chrome/browser/extensions/extension_apitest.h
new file mode 100644
index 0000000..9e1885b
--- /dev/null
+++ b/chrome/browser/extensions/extension_apitest.h
@@ -0,0 +1,47 @@
+// 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_EXTENSIONS_EXTENSION_APITEST_H_
+#define CHROME_BROWSER_EXTENSIONS_EXTENSION_APITEST_H_
+
+#include "chrome/browser/extensions/extension_browsertest.h"
+#include "chrome/common/notification_service.h"
+
+// The general flow of these API tests should work like this:
+// (1) Setup initial browser state (e.g. create some bookmarks for the
+// bookmark test)
+// (2) Call ASSERT_TRUE(RunExtensionTest(name));
+// (3) In your extension code, run your test and call chrome.test.pass or
+// chrome.test.fail
+// (4) Verify expected browser state.
+// TODO(erikkay): There should also be a way to drive events in these tests.
+
+class ExtensionApiTest : public ExtensionBrowserTest {
+ protected:
+ // Load |extension_name| and wait for pass / fail notification.
+ // |extension_name| is a directory in "test/data/extensions/api_test".
+ bool RunExtensionTest(const char* extension_name);
+
+ // Reset |completed_| and wait for a new pass / fail notification.
+ bool WaitForPassFail();
+
+ // All extensions tested by ExtensionApiTest are in the "api_test" dir.
+ virtual void SetUpCommandLine(CommandLine* command_line);
+
+ // NotificationObserver
+ void ExtensionApiTest::Observe(NotificationType type,
+ const NotificationSource& source,
+ const NotificationDetails& details);
+
+ // Did the extension side of the unit test complete?
+ bool completed_;
+
+ // Did the extension side of the unit test pass?
+ bool passed_;
+
+ // If it failed, what was the error message?
+ std::string message_;
+};
+
+#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_APITEST_H_