OLD | NEW |
1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2009 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 <algorithm> | 5 #include <algorithm> |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include "base/file_path.h" | 8 #include "base/file_path.h" |
9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
10 #include "base/json_reader.h" | 10 #include "base/json_reader.h" |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
122 DCHECK(false); | 122 DCHECK(false); |
123 } | 123 } |
124 } | 124 } |
125 | 125 |
126 void SetExtensionsEnabled(bool enabled) { | 126 void SetExtensionsEnabled(bool enabled) { |
127 service_->set_extensions_enabled(enabled); | 127 service_->set_extensions_enabled(enabled); |
128 } | 128 } |
129 | 129 |
130 void TestInstallExtension(const FilePath& path, | 130 void TestInstallExtension(const FilePath& path, |
131 bool should_succeed) { | 131 bool should_succeed) { |
| 132 InstallExtension(path, should_succeed, false); |
| 133 } |
| 134 |
| 135 void TestInstallTheme(const FilePath& path, |
| 136 bool should_succeed) { |
| 137 InstallExtension(path, should_succeed, true); |
| 138 } |
| 139 |
| 140 protected: |
| 141 void InstallExtension(const FilePath& path, |
| 142 bool should_succeed, |
| 143 bool is_theme) { |
132 ASSERT_TRUE(file_util::PathExists(path)); | 144 ASSERT_TRUE(file_util::PathExists(path)); |
133 service_->InstallExtension(path); | 145 service_->InstallExtension(path); |
134 loop_.RunAllPending(); | 146 loop_.RunAllPending(); |
135 std::vector<std::string> errors = GetErrors(); | 147 std::vector<std::string> errors = GetErrors(); |
136 if (should_succeed) { | 148 if (should_succeed) { |
137 ++total_successes_; | 149 ++total_successes_; |
138 | 150 |
139 EXPECT_TRUE(installed_) << path.value(); | 151 EXPECT_TRUE(installed_) << path.value(); |
140 EXPECT_EQ(1u, loaded_.size()) << path.value(); | 152 |
| 153 // Themes aren't loaded. |
| 154 if (is_theme) |
| 155 EXPECT_EQ(0u, loaded_.size()) << path.value(); |
| 156 else |
| 157 EXPECT_EQ(1u, loaded_.size()) << path.value(); |
| 158 |
141 EXPECT_EQ(0u, errors.size()) << path.value(); | 159 EXPECT_EQ(0u, errors.size()) << path.value(); |
142 EXPECT_EQ(total_successes_, service_->extensions()->size()) << | 160 EXPECT_EQ(total_successes_, service_->extensions()->size()) << |
143 path.value(); | 161 path.value(); |
144 if (loaded_.size() > 0) { | 162 if (loaded_.size() > 0) { |
145 EXPECT_TRUE(service_->GetExtensionByID(loaded_[0]->id())) << | 163 EXPECT_TRUE(service_->GetExtensionByID(loaded_[0]->id())) << |
146 path.value(); | 164 path.value(); |
147 } | 165 } |
148 for (std::vector<std::string>::iterator err = errors.begin(); | 166 for (std::vector<std::string>::iterator err = errors.begin(); |
149 err != errors.end(); ++err) { | 167 err != errors.end(); ++err) { |
150 LOG(ERROR) << *err; | 168 LOG(ERROR) << *err; |
151 } | 169 } |
152 } else { | 170 } else { |
153 EXPECT_FALSE(installed_) << path.value(); | 171 EXPECT_FALSE(installed_) << path.value(); |
154 EXPECT_EQ(1u, errors.size()) << path.value(); | 172 EXPECT_EQ(1u, errors.size()) << path.value(); |
155 } | 173 } |
156 | 174 |
157 installed_ = NULL; | 175 installed_ = NULL; |
158 loaded_.clear(); | 176 loaded_.clear(); |
159 ExtensionErrorReporter::GetInstance()->ClearErrors(); | 177 ExtensionErrorReporter::GetInstance()->ClearErrors(); |
160 } | 178 } |
161 | 179 |
162 protected: | |
163 scoped_ptr<TestingProfile> profile_; | 180 scoped_ptr<TestingProfile> profile_; |
164 scoped_refptr<ExtensionsService> service_; | 181 scoped_refptr<ExtensionsService> service_; |
165 size_t total_successes_; | 182 size_t total_successes_; |
166 MessageLoop loop_; | 183 MessageLoop loop_; |
167 std::vector<Extension*> loaded_; | 184 std::vector<Extension*> loaded_; |
168 std::string unloaded_id_; | 185 std::string unloaded_id_; |
169 Extension* installed_; | 186 Extension* installed_; |
170 std::string registry_path_; | 187 std::string registry_path_; |
171 | 188 |
172 private: | 189 private: |
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
348 // TODO(erikkay): add tests for upgrade cases. | 365 // TODO(erikkay): add tests for upgrade cases. |
349 } | 366 } |
350 | 367 |
351 TEST_F(ExtensionsServiceTest, InstallTheme) { | 368 TEST_F(ExtensionsServiceTest, InstallTheme) { |
352 FilePath extensions_path; | 369 FilePath extensions_path; |
353 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &extensions_path)); | 370 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &extensions_path)); |
354 extensions_path = extensions_path.AppendASCII("extensions"); | 371 extensions_path = extensions_path.AppendASCII("extensions"); |
355 | 372 |
356 // A theme. | 373 // A theme. |
357 FilePath path = extensions_path.AppendASCII("theme.crx"); | 374 FilePath path = extensions_path.AppendASCII("theme.crx"); |
358 TestInstallExtension(path, true); | 375 TestInstallTheme(path, true); |
359 | 376 |
360 // A theme when extensions are disabled. | 377 // A theme when extensions are disabled. |
361 SetExtensionsEnabled(false); | 378 SetExtensionsEnabled(false); |
362 path = extensions_path.AppendASCII("theme2.crx"); | 379 path = extensions_path.AppendASCII("theme2.crx"); |
363 TestInstallExtension(path, true); | 380 TestInstallTheme(path, true); |
364 SetExtensionsEnabled(true); | 381 SetExtensionsEnabled(true); |
365 | 382 |
366 // A theme with extension elements. | 383 // A theme with extension elements. |
367 path = extensions_path.AppendASCII("theme_with_extension.crx"); | 384 path = extensions_path.AppendASCII("theme_with_extension.crx"); |
368 TestInstallExtension(path, false); | 385 TestInstallTheme(path, false); |
369 } | 386 } |
370 | 387 |
371 // Test that when an extension version is reinstalled, nothing happens. | 388 // Test that when an extension version is reinstalled, nothing happens. |
372 TEST_F(ExtensionsServiceTest, Reinstall) { | 389 TEST_F(ExtensionsServiceTest, Reinstall) { |
373 FilePath extensions_path; | 390 FilePath extensions_path; |
374 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &extensions_path)); | 391 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &extensions_path)); |
375 extensions_path = extensions_path.AppendASCII("extensions"); | 392 extensions_path = extensions_path.AppendASCII("extensions"); |
376 | 393 |
377 // A simple extension that should install without error. | 394 // A simple extension that should install without error. |
378 FilePath path = extensions_path.AppendASCII("good.crx"); | 395 FilePath path = extensions_path.AppendASCII("good.crx"); |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
573 service_->Init(); | 590 service_->Init(); |
574 loop_.RunAllPending(); | 591 loop_.RunAllPending(); |
575 ASSERT_EQ(0u, loaded_.size()); | 592 ASSERT_EQ(0u, loaded_.size()); |
576 } | 593 } |
577 | 594 |
578 #else | 595 #else |
579 | 596 |
580 // TODO(port) | 597 // TODO(port) |
581 | 598 |
582 #endif | 599 #endif |
OLD | NEW |