OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/extensions/extension_apitest.h" | 5 #include "chrome/browser/extensions/extension_apitest.h" |
6 | 6 |
7 #include "base/string_util.h" | 7 #include "base/string_util.h" |
8 #include "chrome/browser/browser.h" | 8 #include "chrome/browser/browser.h" |
9 #include "chrome/browser/extensions/extensions_service.h" | 9 #include "chrome/browser/extensions/extensions_service.h" |
10 #include "chrome/browser/profile.h" | 10 #include "chrome/browser/profile.h" |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 default: | 74 default: |
75 NOTREACHED(); | 75 NOTREACHED(); |
76 } | 76 } |
77 } | 77 } |
78 | 78 |
79 bool ExtensionApiTest::RunExtensionTest(const char* extension_name) { | 79 bool ExtensionApiTest::RunExtensionTest(const char* extension_name) { |
80 return RunExtensionTestImpl(extension_name, ""); | 80 return RunExtensionTestImpl(extension_name, ""); |
81 } | 81 } |
82 | 82 |
83 bool ExtensionApiTest::RunExtensionSubtest(const char* extension_name, | 83 bool ExtensionApiTest::RunExtensionSubtest(const char* extension_name, |
84 const std::string& subtest_page) { | 84 const std::string& page_url) { |
85 DCHECK(!subtest_page.empty()) << "Argument subtest_page is required."; | 85 DCHECK(!page_url.empty()) << "Argument page_url is required."; |
86 return RunExtensionTestImpl(extension_name, subtest_page); | 86 return RunExtensionTestImpl(extension_name, page_url); |
87 } | 87 } |
88 | 88 |
89 // Load an extension and wait for it to notify of PASSED or FAILED. | 89 bool ExtensionApiTest::RunPageTest(const std::string& page_url) { |
| 90 return RunExtensionSubtest("", page_url); |
| 91 } |
| 92 |
| 93 // Load |extension_name| extension and/or |page_url| and wait for |
| 94 // PASSED or FAILED notification. |
90 bool ExtensionApiTest::RunExtensionTestImpl(const char* extension_name, | 95 bool ExtensionApiTest::RunExtensionTestImpl(const char* extension_name, |
91 const std::string& subtest_page) { | 96 const std::string& page_url) { |
92 ResultCatcher catcher; | 97 ResultCatcher catcher; |
93 LOG(INFO) << "Running ExtensionApiTest with: " << extension_name; | 98 DCHECK(!std::string(extension_name).empty() || !page_url.empty()) << |
| 99 "extension_name and page_url cannot both be empty"; |
| 100 LOG(INFO) << "Running ExtensionApiTest"; |
94 | 101 |
95 if (!LoadExtension(test_data_dir_.AppendASCII(extension_name))) { | 102 if (!std::string(extension_name).empty()) { |
96 message_ = "Failed to load extension."; | 103 LOG(INFO) << "Loading Extension: " << extension_name; |
97 return false; | 104 if (!LoadExtension(test_data_dir_.AppendASCII(extension_name))) { |
| 105 message_ = "Failed to load extension."; |
| 106 return false; |
| 107 } |
98 } | 108 } |
99 | 109 |
100 // If there is a subtest to load, navigate to the subtest page. | 110 // If there is a page_url to load, navigate it. |
101 if (!subtest_page.empty()) { | 111 if (!page_url.empty()) { |
102 ExtensionsService* service = browser()->profile()->GetExtensionsService(); | 112 GURL url = GURL(page_url); |
103 Extension* extension = | |
104 service->GetExtensionById(last_loaded_extension_id_, false); | |
105 if (!extension) | |
106 return false; | |
107 | 113 |
108 GURL url = extension->GetResourceURL(subtest_page); | 114 // Note: We use is_valid() here in the expectation that the provided url |
109 LOG(ERROR) << "Loading subtest page url: " << url.spec(); | 115 // may lack a scheme & host and thus be a relative url within the loaded |
| 116 // extension. |
| 117 if (!url.is_valid()) { |
| 118 DCHECK(!std::string(extension_name).empty()) << |
| 119 "Relative page_url given with no extension_name"; |
| 120 |
| 121 ExtensionsService* service = browser()->profile()->GetExtensionsService(); |
| 122 Extension* extension = |
| 123 service->GetExtensionById(last_loaded_extension_id_, false); |
| 124 if (!extension) |
| 125 return false; |
| 126 |
| 127 url = extension->GetResourceURL(page_url); |
| 128 } |
| 129 |
| 130 LOG(ERROR) << "Loading page url: " << url.spec(); |
110 ui_test_utils::NavigateToURL(browser(), url); | 131 ui_test_utils::NavigateToURL(browser(), url); |
111 } | 132 } |
112 | 133 |
113 if (!catcher.GetNextResult()) { | 134 if (!catcher.GetNextResult()) { |
114 message_ = catcher.message(); | 135 message_ = catcher.message(); |
115 return false; | 136 return false; |
116 } else { | 137 } else { |
117 return true; | 138 return true; |
118 } | 139 } |
119 } | 140 } |
(...skipping 24 matching lines...) Expand all Loading... |
144 message_ = "extension pointer is NULL."; | 165 message_ = "extension pointer is NULL."; |
145 return NULL; | 166 return NULL; |
146 } | 167 } |
147 return extension; | 168 return extension; |
148 } | 169 } |
149 | 170 |
150 void ExtensionApiTest::SetUpCommandLine(CommandLine* command_line) { | 171 void ExtensionApiTest::SetUpCommandLine(CommandLine* command_line) { |
151 ExtensionBrowserTest::SetUpCommandLine(command_line); | 172 ExtensionBrowserTest::SetUpCommandLine(command_line); |
152 test_data_dir_ = test_data_dir_.AppendASCII("api_test"); | 173 test_data_dir_ = test_data_dir_.AppendASCII("api_test"); |
153 } | 174 } |
OLD | NEW |