Index: chrome/browser/extensions/extension_apitest.cc |
diff --git a/chrome/browser/extensions/extension_apitest.cc b/chrome/browser/extensions/extension_apitest.cc |
index 3f9d367ba5e3cd407a2f489122dcdc1740ba3055..c8de034c0331f91c9aa09a70827b12a3ef286b82 100644 |
--- a/chrome/browser/extensions/extension_apitest.cc |
+++ b/chrome/browser/extensions/extension_apitest.cc |
@@ -105,65 +105,75 @@ void ExtensionApiTest::TearDownInProcessBrowserTestFixture() { |
} |
bool ExtensionApiTest::RunExtensionTest(const char* extension_name) { |
- return RunExtensionTestImpl(extension_name, "", false, true, false); |
+ return RunExtensionTestImpl(extension_name, "", kFlagEnableFileaccess); |
} |
bool ExtensionApiTest::RunExtensionTestIncognito(const char* extension_name) { |
- return RunExtensionTestImpl(extension_name, "", true, true, false); |
+ return RunExtensionTestImpl( |
+ extension_name, "", kFlagEnableIncognito | kFlagEnableFileaccess); |
} |
bool ExtensionApiTest::RunComponentExtensionTest(const char* extension_name) { |
- return RunExtensionTestImpl(extension_name, "", false, true, true); |
+ return RunExtensionTestImpl( |
+ extension_name, "", kFlagEnableIncognito | kFlagLoadAsComponent); |
} |
bool ExtensionApiTest::RunExtensionTestNoFileAccess( |
const char* extension_name) { |
- return RunExtensionTestImpl(extension_name, "", false, false, false); |
+ return RunExtensionTestImpl(extension_name, "", kFlagNone); |
} |
bool ExtensionApiTest::RunExtensionTestIncognitoNoFileAccess( |
const char* extension_name) { |
- return RunExtensionTestImpl(extension_name, "", true, false, false); |
+ return RunExtensionTestImpl(extension_name, "", kFlagEnableIncognito); |
} |
bool ExtensionApiTest::RunExtensionSubtest(const char* extension_name, |
const std::string& page_url) { |
DCHECK(!page_url.empty()) << "Argument page_url is required."; |
- return RunExtensionTestImpl(extension_name, page_url, false, true, false); |
+ return RunExtensionTestImpl(extension_name, page_url, kFlagEnableFileaccess); |
} |
bool ExtensionApiTest::RunExtensionSubtestNoFileAccess( |
const char* extension_name, |
const std::string& page_url) { |
DCHECK(!page_url.empty()) << "Argument page_url is required."; |
- return RunExtensionTestImpl(extension_name, page_url, false, false, false); |
+ return RunExtensionTestImpl(extension_name, page_url, kFlagNone); |
} |
bool ExtensionApiTest::RunExtensionSubtestIncognito( |
const char* extension_name, |
const std::string& page_url) { |
DCHECK(!page_url.empty()) << "Argument page_url is required."; |
- return RunExtensionTestImpl(extension_name, page_url, true, true, false); |
+ return RunExtensionTestImpl(extension_name, page_url, |
+ kFlagEnableIncognito | kFlagEnableFileaccess); |
} |
bool ExtensionApiTest::RunExtensionSubtestIncognitoNoFileAccess( |
const char* extension_name, |
const std::string& page_url) { |
DCHECK(!page_url.empty()) << "Argument page_url is required."; |
- return RunExtensionTestImpl(extension_name, page_url, true, false, false); |
+ return RunExtensionTestImpl(extension_name, page_url, kFlagEnableIncognito); |
} |
bool ExtensionApiTest::RunPageTest(const std::string& page_url) { |
return RunExtensionSubtest("", page_url); |
} |
+bool ExtensionApiTest::RunPlatformAppTest(const char* extension_name) { |
+ return RunExtensionTestImpl(extension_name, "", kFlagLaunchAppShell); |
+} |
+ |
// Load |extension_name| extension and/or |page_url| and wait for |
// PASSED or FAILED notification. |
bool ExtensionApiTest::RunExtensionTestImpl(const char* extension_name, |
const std::string& page_url, |
- bool enable_incognito, |
- bool enable_fileaccess, |
- bool load_as_component) { |
+ int flags) { |
+ bool enable_incognito = (flags & kFlagEnableIncognito) != 0; |
+ bool enable_fileaccess = (flags & kFlagEnableFileaccess) != 0; |
+ bool load_as_component = (flags & kFlagLoadAsComponent) != 0; |
+ bool launch_shell = (flags & kFlagLaunchAppShell) != 0; |
+ |
ResultCatcher catcher; |
DCHECK(!std::string(extension_name).empty() || !page_url.empty()) << |
"extension_name and page_url cannot both be empty"; |
@@ -183,6 +193,14 @@ bool ExtensionApiTest::RunExtensionTestImpl(const char* extension_name, |
} |
} |
+ ExtensionService* service = browser()->profile()->GetExtensionService(); |
+ const Extension* extension = |
+ service->GetExtensionById(last_loaded_extension_id_, false); |
+ if (!extension) { |
+ message_ = "Failed to find extension in ExtensionService."; |
+ return false; |
+ } |
+ |
// If there is a page_url to load, navigate it. |
if (!page_url.empty()) { |
GURL url = GURL(page_url); |
@@ -193,19 +211,18 @@ bool ExtensionApiTest::RunExtensionTestImpl(const char* extension_name, |
if (!url.is_valid()) { |
DCHECK(!std::string(extension_name).empty()) << |
"Relative page_url given with no extension_name"; |
- |
- ExtensionService* service = browser()->profile()->GetExtensionService(); |
- const Extension* extension = |
- service->GetExtensionById(last_loaded_extension_id_, false); |
- if (!extension) { |
- message_ = "Failed to find extension in ExtensionService."; |
- return false; |
- } |
- |
url = extension->GetResourceURL(page_url); |
} |
ui_test_utils::NavigateToURL(browser(), url); |
+ |
+ } else if (launch_shell) { |
+ Browser::OpenApplication( |
+ browser()->profile(), |
+ extension, |
+ extension_misc::LAUNCH_SHELL, |
+ GURL(), |
+ NEW_WINDOW); |
} |
if (!catcher.GetNextResult()) { |