[email protected] | 1ffebd3b | 2014-04-09 12:23:00 | [diff] [blame] | 1 | // Copyright 2014 The Chromium Authors. All rights reserved. |
2 | // Use of this source code is governed by a BSD-style license that can be | ||||
3 | // found in the LICENSE file. | ||||
4 | |||||
dcheng | 4a7e93b | 2016-04-23 00:27:16 | [diff] [blame] | 5 | #include <memory> |
6 | |||||
[email protected] | 582f6e9 | 2014-07-16 23:39:15 | [diff] [blame] | 7 | #include "base/base_paths.h" |
[email protected] | 1ffebd3b | 2014-04-09 12:23:00 | [diff] [blame] | 8 | #include "base/bind.h" |
9 | #include "base/macros.h" | ||||
[email protected] | 582f6e9 | 2014-07-16 23:39:15 | [diff] [blame] | 10 | #include "base/path_service.h" |
[email protected] | 1ffebd3b | 2014-04-09 12:23:00 | [diff] [blame] | 11 | #include "base/test/launcher/unit_test_launcher.h" |
amistry | 780142d | 2016-04-01 02:18:35 | [diff] [blame] | 12 | #include "base/test/test_io_thread.h" |
[email protected] | 39ca2051 | 2014-07-24 12:35:52 | [diff] [blame] | 13 | #include "content/public/common/content_client.h" |
14 | #include "content/public/test/content_test_suite_base.h" | ||||
[email protected] | 582f6e9 | 2014-07-16 23:39:15 | [diff] [blame] | 15 | #include "content/public/test/unittest_test_suite.h" |
[email protected] | 39ca2051 | 2014-07-24 12:35:52 | [diff] [blame] | 16 | #include "extensions/common/constants.h" |
[email protected] | 582f6e9 | 2014-07-16 23:39:15 | [diff] [blame] | 17 | #include "extensions/common/extension_paths.h" |
[email protected] | dc909f1 | 2014-04-14 00:50:37 | [diff] [blame] | 18 | #include "extensions/test/test_extensions_client.h" |
[email protected] | 582f6e9 | 2014-07-16 23:39:15 | [diff] [blame] | 19 | #include "ui/base/resource/resource_bundle.h" |
sadrul | ba162cd | 2015-07-20 22:34:26 | [diff] [blame] | 20 | #include "ui/gl/test/gl_surface_test_support.h" |
tyoshino | 11a7c9fe | 2015-08-19 08:51:46 | [diff] [blame] | 21 | #include "url/url_util.h" |
[email protected] | 1ffebd3b | 2014-04-09 12:23:00 | [diff] [blame] | 22 | |
23 | namespace { | ||||
24 | |||||
[email protected] | 39ca2051 | 2014-07-24 12:35:52 | [diff] [blame] | 25 | // Content client that exists only to register chrome-extension:// scheme with |
26 | // the url module. | ||||
27 | // TODO(jamescook): Should this be merged with ShellContentClient? Should this | ||||
28 | // be a persistent object available to tests? | ||||
29 | class ExtensionsContentClient : public content::ContentClient { | ||||
30 | public: | ||||
31 | ExtensionsContentClient() {} | ||||
dcheng | 9168b2f | 2014-10-21 12:38:24 | [diff] [blame] | 32 | ~ExtensionsContentClient() override {} |
[email protected] | 39ca2051 | 2014-07-24 12:35:52 | [diff] [blame] | 33 | |
34 | // content::ContentClient overrides: | ||||
jam | e0dcd98 | 2017-01-11 03:13:45 | [diff] [blame] | 35 | void AddAdditionalSchemes(Schemes* schemes) override { |
36 | schemes->standard_schemes.push_back(extensions::kExtensionScheme); | ||||
37 | schemes->savable_schemes.push_back(extensions::kExtensionScheme); | ||||
[email protected] | 39ca2051 | 2014-07-24 12:35:52 | [diff] [blame] | 38 | } |
39 | |||||
40 | private: | ||||
41 | DISALLOW_COPY_AND_ASSIGN(ExtensionsContentClient); | ||||
42 | }; | ||||
43 | |||||
44 | // The test suite for extensions_unittests. | ||||
45 | class ExtensionsTestSuite : public content::ContentTestSuiteBase { | ||||
[email protected] | 1ffebd3b | 2014-04-09 12:23:00 | [diff] [blame] | 46 | public: |
47 | ExtensionsTestSuite(int argc, char** argv); | ||||
dcheng | 9168b2f | 2014-10-21 12:38:24 | [diff] [blame] | 48 | ~ExtensionsTestSuite() override; |
[email protected] | 1ffebd3b | 2014-04-09 12:23:00 | [diff] [blame] | 49 | |
[email protected] | dc909f1 | 2014-04-14 00:50:37 | [diff] [blame] | 50 | private: |
[email protected] | 1ffebd3b | 2014-04-09 12:23:00 | [diff] [blame] | 51 | // base::TestSuite: |
dcheng | 9168b2f | 2014-10-21 12:38:24 | [diff] [blame] | 52 | void Initialize() override; |
53 | void Shutdown() override; | ||||
[email protected] | 1ffebd3b | 2014-04-09 12:23:00 | [diff] [blame] | 54 | |
dcheng | 4a7e93b | 2016-04-23 00:27:16 | [diff] [blame] | 55 | std::unique_ptr<extensions::TestExtensionsClient> client_; |
[email protected] | dc909f1 | 2014-04-14 00:50:37 | [diff] [blame] | 56 | |
[email protected] | 1ffebd3b | 2014-04-09 12:23:00 | [diff] [blame] | 57 | DISALLOW_COPY_AND_ASSIGN(ExtensionsTestSuite); |
58 | }; | ||||
59 | |||||
60 | ExtensionsTestSuite::ExtensionsTestSuite(int argc, char** argv) | ||||
[email protected] | 39ca2051 | 2014-07-24 12:35:52 | [diff] [blame] | 61 | : content::ContentTestSuiteBase(argc, argv) {} |
62 | |||||
63 | ExtensionsTestSuite::~ExtensionsTestSuite() {} | ||||
[email protected] | 1ffebd3b | 2014-04-09 12:23:00 | [diff] [blame] | 64 | |
65 | void ExtensionsTestSuite::Initialize() { | ||||
[email protected] | 39ca2051 | 2014-07-24 12:35:52 | [diff] [blame] | 66 | content::ContentTestSuiteBase::Initialize(); |
kylechar | 7a46384 | 2016-05-26 14:46:12 | [diff] [blame] | 67 | gl::GLSurfaceTestSupport::InitializeOneOff(); |
[email protected] | 39ca2051 | 2014-07-24 12:35:52 | [diff] [blame] | 68 | |
69 | // Register the chrome-extension:// scheme via this circuitous path. Note | ||||
70 | // that this does not persistently set up a ContentClient; individual tests | ||||
71 | // must use content::SetContentClient(). | ||||
72 | { | ||||
73 | ExtensionsContentClient content_client; | ||||
74 | RegisterContentSchemes(&content_client); | ||||
75 | } | ||||
asargent | 275faaa | 2015-01-27 23:43:29 | [diff] [blame] | 76 | RegisterInProcessThreads(); |
[email protected] | dc909f1 | 2014-04-14 00:50:37 | [diff] [blame] | 77 | |
[email protected] | 582f6e9 | 2014-07-16 23:39:15 | [diff] [blame] | 78 | extensions::RegisterPathProvider(); |
79 | |||||
[email protected] | 02b2c90 | 2014-07-30 16:34:40 | [diff] [blame] | 80 | base::FilePath extensions_shell_and_test_pak_path; |
81 | PathService::Get(base::DIR_MODULE, &extensions_shell_and_test_pak_path); | ||||
[email protected] | b49ced6 | 2014-07-25 16:47:03 | [diff] [blame] | 82 | ui::ResourceBundle::InitSharedInstanceWithPakPath( |
[email protected] | 02b2c90 | 2014-07-30 16:34:40 | [diff] [blame] | 83 | extensions_shell_and_test_pak_path.AppendASCII( |
84 | "extensions_shell_and_test.pak")); | ||||
[email protected] | 582f6e9 | 2014-07-16 23:39:15 | [diff] [blame] | 85 | |
[email protected] | dc909f1 | 2014-04-14 00:50:37 | [diff] [blame] | 86 | client_.reset(new extensions::TestExtensionsClient()); |
87 | extensions::ExtensionsClient::Set(client_.get()); | ||||
[email protected] | 1ffebd3b | 2014-04-09 12:23:00 | [diff] [blame] | 88 | } |
89 | |||||
90 | void ExtensionsTestSuite::Shutdown() { | ||||
[email protected] | 39ca2051 | 2014-07-24 12:35:52 | [diff] [blame] | 91 | extensions::ExtensionsClient::Set(NULL); |
92 | client_.reset(); | ||||
93 | |||||
[email protected] | b49ced6 | 2014-07-25 16:47:03 | [diff] [blame] | 94 | ui::ResourceBundle::CleanupSharedInstance(); |
[email protected] | 39ca2051 | 2014-07-24 12:35:52 | [diff] [blame] | 95 | content::ContentTestSuiteBase::Shutdown(); |
[email protected] | 1ffebd3b | 2014-04-09 12:23:00 | [diff] [blame] | 96 | } |
97 | |||||
98 | } // namespace | ||||
99 | |||||
100 | int main(int argc, char** argv) { | ||||
[email protected] | 582f6e9 | 2014-07-16 23:39:15 | [diff] [blame] | 101 | content::UnitTestTestSuite test_suite(new ExtensionsTestSuite(argc, argv)); |
[email protected] | 1ffebd3b | 2014-04-09 12:23:00 | [diff] [blame] | 102 | return base::LaunchUnitTests(argc, |
103 | argv, | ||||
[email protected] | 582f6e9 | 2014-07-16 23:39:15 | [diff] [blame] | 104 | base::Bind(&content::UnitTestTestSuite::Run, |
[email protected] | 1ffebd3b | 2014-04-09 12:23:00 | [diff] [blame] | 105 | base::Unretained(&test_suite))); |
106 | } |