Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(221)

Side by Side Diff: chrome/browser/extensions/api/developer_private/developer_private_api_unittest.cc

Issue 1871713002: Convert //chrome/browser/extensions from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase and fix header Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/api/developer_private/developer_private_api. h"
6
7 #include <memory>
5 #include <utility> 8 #include <utility>
6 9
7 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
8 #include "base/macros.h" 11 #include "base/macros.h"
9 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/ptr_util.h"
10 #include "base/strings/utf_string_conversions.h" 13 #include "base/strings/utf_string_conversions.h"
11 #include "chrome/browser/extensions/api/developer_private/developer_private_api. h"
12 #include "chrome/browser/extensions/error_console/error_console.h" 14 #include "chrome/browser/extensions/error_console/error_console.h"
13 #include "chrome/browser/extensions/extension_function_test_utils.h" 15 #include "chrome/browser/extensions/extension_function_test_utils.h"
14 #include "chrome/browser/extensions/extension_service.h" 16 #include "chrome/browser/extensions/extension_service.h"
15 #include "chrome/browser/extensions/extension_service_test_base.h" 17 #include "chrome/browser/extensions/extension_service_test_base.h"
16 #include "chrome/browser/extensions/extension_util.h" 18 #include "chrome/browser/extensions/extension_util.h"
17 #include "chrome/browser/extensions/test_extension_dir.h" 19 #include "chrome/browser/extensions/test_extension_dir.h"
18 #include "chrome/browser/extensions/test_extension_system.h" 20 #include "chrome/browser/extensions/test_extension_system.h"
19 #include "chrome/browser/extensions/unpacked_installer.h" 21 #include "chrome/browser/extensions/unpacked_installer.h"
20 #include "chrome/browser/ui/browser.h" 22 #include "chrome/browser/ui/browser.h"
21 #include "chrome/common/extensions/api/developer_private.h" 23 #include "chrome/common/extensions/api/developer_private.h"
(...skipping 12 matching lines...) Expand all
34 #include "extensions/common/extension_set.h" 36 #include "extensions/common/extension_set.h"
35 #include "extensions/common/feature_switch.h" 37 #include "extensions/common/feature_switch.h"
36 #include "extensions/common/manifest_constants.h" 38 #include "extensions/common/manifest_constants.h"
37 #include "extensions/common/test_util.h" 39 #include "extensions/common/test_util.h"
38 #include "extensions/common/value_builder.h" 40 #include "extensions/common/value_builder.h"
39 41
40 namespace extensions { 42 namespace extensions {
41 43
42 namespace { 44 namespace {
43 45
44 scoped_ptr<KeyedService> BuildAPI(content::BrowserContext* context) { 46 std::unique_ptr<KeyedService> BuildAPI(content::BrowserContext* context) {
45 return make_scoped_ptr(new DeveloperPrivateAPI(context)); 47 return base::WrapUnique(new DeveloperPrivateAPI(context));
46 } 48 }
47 49
48 scoped_ptr<KeyedService> BuildEventRouter(content::BrowserContext* profile) { 50 std::unique_ptr<KeyedService> BuildEventRouter(
49 return make_scoped_ptr( 51 content::BrowserContext* profile) {
52 return base::WrapUnique(
50 new EventRouter(profile, ExtensionPrefs::Get(profile))); 53 new EventRouter(profile, ExtensionPrefs::Get(profile)));
51 } 54 }
52 55
53 } // namespace 56 } // namespace
54 57
55 class DeveloperPrivateApiUnitTest : public ExtensionServiceTestBase { 58 class DeveloperPrivateApiUnitTest : public ExtensionServiceTestBase {
56 protected: 59 protected:
57 DeveloperPrivateApiUnitTest() {} 60 DeveloperPrivateApiUnitTest() {}
58 ~DeveloperPrivateApiUnitTest() override {} 61 ~DeveloperPrivateApiUnitTest() override {}
59 62
(...skipping 22 matching lines...) Expand all
82 int expected_flags); 85 int expected_flags);
83 86
84 Browser* browser() { return browser_.get(); } 87 Browser* browser() { return browser_.get(); }
85 88
86 private: 89 private:
87 // ExtensionServiceTestBase: 90 // ExtensionServiceTestBase:
88 void SetUp() override; 91 void SetUp() override;
89 void TearDown() override; 92 void TearDown() override;
90 93
91 // The browser (and accompanying window). 94 // The browser (and accompanying window).
92 scoped_ptr<TestBrowserWindow> browser_window_; 95 std::unique_ptr<TestBrowserWindow> browser_window_;
93 scoped_ptr<Browser> browser_; 96 std::unique_ptr<Browser> browser_;
94 97
95 ScopedVector<TestExtensionDir> test_extension_dirs_; 98 ScopedVector<TestExtensionDir> test_extension_dirs_;
96 99
97 DISALLOW_COPY_AND_ASSIGN(DeveloperPrivateApiUnitTest); 100 DISALLOW_COPY_AND_ASSIGN(DeveloperPrivateApiUnitTest);
98 }; 101 };
99 102
100 bool DeveloperPrivateApiUnitTest::RunFunction( 103 bool DeveloperPrivateApiUnitTest::RunFunction(
101 const scoped_refptr<UIThreadExtensionFunction>& function, 104 const scoped_refptr<UIThreadExtensionFunction>& function,
102 const base::ListValue& args) { 105 const base::ListValue& args) {
103 return extension_function_test_utils::RunFunction( 106 return extension_function_test_utils::RunFunction(
104 function.get(), 107 function.get(), base::WrapUnique(args.DeepCopy()), browser(),
105 make_scoped_ptr(args.DeepCopy()),
106 browser(),
107 extension_function_test_utils::NONE); 108 extension_function_test_utils::NONE);
108 } 109 }
109 110
110 const Extension* DeveloperPrivateApiUnitTest::LoadUnpackedExtension() { 111 const Extension* DeveloperPrivateApiUnitTest::LoadUnpackedExtension() {
111 const char kManifest[] = 112 const char kManifest[] =
112 "{" 113 "{"
113 " \"name\": \"foo\"," 114 " \"name\": \"foo\","
114 " \"version\": \"1.0\"," 115 " \"version\": \"1.0\","
115 " \"manifest_version\": 2," 116 " \"manifest_version\": 2,"
116 " \"permissions\": [\"*://*/*\"]" 117 " \"permissions\": [\"*://*/*\"]"
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 int expected_flags) { 196 int expected_flags) {
196 scoped_refptr<UIThreadExtensionFunction> function( 197 scoped_refptr<UIThreadExtensionFunction> function(
197 new api::DeveloperPrivatePackDirectoryFunction()); 198 new api::DeveloperPrivatePackDirectoryFunction());
198 if (!RunFunction(function, args)) 199 if (!RunFunction(function, args))
199 return testing::AssertionFailure() << "Could not run function."; 200 return testing::AssertionFailure() << "Could not run function.";
200 201
201 // Extract the result. We don't have to test this here, since it's verified as 202 // Extract the result. We don't have to test this here, since it's verified as
202 // part of the general extension api system. 203 // part of the general extension api system.
203 const base::Value* response_value = nullptr; 204 const base::Value* response_value = nullptr;
204 CHECK(function->GetResultList()->Get(0u, &response_value)); 205 CHECK(function->GetResultList()->Get(0u, &response_value));
205 scoped_ptr<api::developer_private::PackDirectoryResponse> response = 206 std::unique_ptr<api::developer_private::PackDirectoryResponse> response =
206 api::developer_private::PackDirectoryResponse::FromValue(*response_value); 207 api::developer_private::PackDirectoryResponse::FromValue(*response_value);
207 CHECK(response); 208 CHECK(response);
208 209
209 if (response->status != expected_status) { 210 if (response->status != expected_status) {
210 return testing::AssertionFailure() << "Expected status: " << 211 return testing::AssertionFailure() << "Expected status: " <<
211 expected_status << ", found status: " << response->status << 212 expected_status << ", found status: " << response->status <<
212 ", message: " << response->message; 213 ", message: " << response->message;
213 } 214 }
214 215
215 if (response->override_flags != expected_flags) { 216 if (response->override_flags != expected_flags) {
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 path, 398 path,
398 registry()->enabled_extensions().GetByID(*id_difference.begin())->path()); 399 registry()->enabled_extensions().GetByID(*id_difference.begin())->path());
399 400
400 path = data_dir().AppendASCII("empty_manifest"); 401 path = data_dir().AppendASCII("empty_manifest");
401 api::EntryPicker::SkipPickerAndAlwaysSelectPathForTest(&path); 402 api::EntryPicker::SkipPickerAndAlwaysSelectPathForTest(&path);
402 403
403 // Try loading a bad extension (it should fail, and we should get an error). 404 // Try loading a bad extension (it should fail, and we should get an error).
404 function = new api::DeveloperPrivateLoadUnpackedFunction(); 405 function = new api::DeveloperPrivateLoadUnpackedFunction();
405 function->SetRenderFrameHost(web_contents->GetMainFrame()); 406 function->SetRenderFrameHost(web_contents->GetMainFrame());
406 base::ListValue unpacked_args; 407 base::ListValue unpacked_args;
407 scoped_ptr<base::DictionaryValue> options(new base::DictionaryValue()); 408 std::unique_ptr<base::DictionaryValue> options(new base::DictionaryValue());
408 options->SetBoolean("failQuietly", true); 409 options->SetBoolean("failQuietly", true);
409 unpacked_args.Append(options.release()); 410 unpacked_args.Append(options.release());
410 current_ids = registry()->enabled_extensions().GetIDs(); 411 current_ids = registry()->enabled_extensions().GetIDs();
411 EXPECT_FALSE(RunFunction(function, unpacked_args)); 412 EXPECT_FALSE(RunFunction(function, unpacked_args));
412 EXPECT_EQ(manifest_errors::kManifestUnreadable, function->GetError()); 413 EXPECT_EQ(manifest_errors::kManifestUnreadable, function->GetError());
413 // We should have no new extensions installed. 414 // We should have no new extensions installed.
414 EXPECT_EQ(0u, base::STLSetDifference<ExtensionIdSet>( 415 EXPECT_EQ(0u, base::STLSetDifference<ExtensionIdSet>(
415 registry()->enabled_extensions().GetIDs(), 416 registry()->enabled_extensions().GetIDs(),
416 current_ids).size()); 417 current_ids).size());
417 } 418 }
(...skipping 15 matching lines...) Expand all
433 properties.manifest_key.reset(new std::string("name")); 434 properties.manifest_key.reset(new std::string("name"));
434 435
435 scoped_refptr<UIThreadExtensionFunction> function( 436 scoped_refptr<UIThreadExtensionFunction> function(
436 new api::DeveloperPrivateRequestFileSourceFunction()); 437 new api::DeveloperPrivateRequestFileSourceFunction());
437 base::ListValue file_source_args; 438 base::ListValue file_source_args;
438 file_source_args.Append(properties.ToValue().release()); 439 file_source_args.Append(properties.ToValue().release());
439 EXPECT_TRUE(RunFunction(function, file_source_args)) << function->GetError(); 440 EXPECT_TRUE(RunFunction(function, file_source_args)) << function->GetError();
440 441
441 const base::Value* response_value = nullptr; 442 const base::Value* response_value = nullptr;
442 ASSERT_TRUE(function->GetResultList()->Get(0u, &response_value)); 443 ASSERT_TRUE(function->GetResultList()->Get(0u, &response_value));
443 scoped_ptr<api::developer_private::RequestFileSourceResponse> response = 444 std::unique_ptr<api::developer_private::RequestFileSourceResponse> response =
444 api::developer_private::RequestFileSourceResponse::FromValue( 445 api::developer_private::RequestFileSourceResponse::FromValue(
445 *response_value); 446 *response_value);
446 EXPECT_FALSE(response->before_highlight.empty()); 447 EXPECT_FALSE(response->before_highlight.empty());
447 EXPECT_EQ("\"name\": \"foo\"", response->highlight); 448 EXPECT_EQ("\"name\": \"foo\"", response->highlight);
448 EXPECT_FALSE(response->after_highlight.empty()); 449 EXPECT_FALSE(response->after_highlight.empty());
449 EXPECT_EQ("foo: manifest.json", response->title); 450 EXPECT_EQ("foo: manifest.json", response->title);
450 EXPECT_EQ(kErrorMessage, response->message); 451 EXPECT_EQ(kErrorMessage, response->message);
451 } 452 }
452 453
453 // Test developerPrivate.getExtensionsInfo. 454 // Test developerPrivate.getExtensionsInfo.
(...skipping 10 matching lines...) Expand all
464 scoped_refptr<UIThreadExtensionFunction> function( 465 scoped_refptr<UIThreadExtensionFunction> function(
465 new api::DeveloperPrivateGetExtensionsInfoFunction()); 466 new api::DeveloperPrivateGetExtensionsInfoFunction());
466 EXPECT_TRUE(RunFunction(function, base::ListValue())) << function->GetError(); 467 EXPECT_TRUE(RunFunction(function, base::ListValue())) << function->GetError();
467 const base::ListValue* results = function->GetResultList(); 468 const base::ListValue* results = function->GetResultList();
468 ASSERT_EQ(1u, results->GetSize()); 469 ASSERT_EQ(1u, results->GetSize());
469 const base::ListValue* list = nullptr; 470 const base::ListValue* list = nullptr;
470 ASSERT_TRUE(results->GetList(0u, &list)); 471 ASSERT_TRUE(results->GetList(0u, &list));
471 ASSERT_EQ(1u, list->GetSize()); 472 ASSERT_EQ(1u, list->GetSize());
472 const base::Value* value = nullptr; 473 const base::Value* value = nullptr;
473 ASSERT_TRUE(list->Get(0u, &value)); 474 ASSERT_TRUE(list->Get(0u, &value));
474 scoped_ptr<api::developer_private::ExtensionInfo> info = 475 std::unique_ptr<api::developer_private::ExtensionInfo> info =
475 api::developer_private::ExtensionInfo::FromValue(*value); 476 api::developer_private::ExtensionInfo::FromValue(*value);
476 ASSERT_TRUE(info); 477 ASSERT_TRUE(info);
477 478
478 // As a sanity check, also run the GetItemsInfo and make sure it returns a 479 // As a sanity check, also run the GetItemsInfo and make sure it returns a
479 // sane value. 480 // sane value.
480 function = new api::DeveloperPrivateGetItemsInfoFunction(); 481 function = new api::DeveloperPrivateGetItemsInfoFunction();
481 base::ListValue args; 482 base::ListValue args;
482 args.AppendBoolean(false); 483 args.AppendBoolean(false);
483 args.AppendBoolean(false); 484 args.AppendBoolean(false);
484 EXPECT_TRUE(RunFunction(function, args)) << function->GetError(); 485 EXPECT_TRUE(RunFunction(function, args)) << function->GetError();
485 results = function->GetResultList(); 486 results = function->GetResultList();
486 ASSERT_EQ(1u, results->GetSize()); 487 ASSERT_EQ(1u, results->GetSize());
487 ASSERT_TRUE(results->GetList(0u, &list)); 488 ASSERT_TRUE(results->GetList(0u, &list));
488 ASSERT_EQ(1u, list->GetSize()); 489 ASSERT_EQ(1u, list->GetSize());
489 ASSERT_TRUE(list->Get(0u, &value)); 490 ASSERT_TRUE(list->Get(0u, &value));
490 scoped_ptr<api::developer_private::ItemInfo> item_info = 491 std::unique_ptr<api::developer_private::ItemInfo> item_info =
491 api::developer_private::ItemInfo::FromValue(*value); 492 api::developer_private::ItemInfo::FromValue(*value);
492 ASSERT_TRUE(item_info); 493 ASSERT_TRUE(item_info);
493 } 494 }
494 495
495 // Test developerPrivate.deleteExtensionErrors. 496 // Test developerPrivate.deleteExtensionErrors.
496 TEST_F(DeveloperPrivateApiUnitTest, DeveloperPrivateDeleteExtensionErrors) { 497 TEST_F(DeveloperPrivateApiUnitTest, DeveloperPrivateDeleteExtensionErrors) {
497 FeatureSwitch::ScopedOverride error_console_override( 498 FeatureSwitch::ScopedOverride error_console_override(
498 FeatureSwitch::error_console(), true); 499 FeatureSwitch::error_console(), true);
499 profile()->GetPrefs()->SetBoolean(prefs::kExtensionsUIDeveloperMode, true); 500 profile()->GetPrefs()->SetBoolean(prefs::kExtensionsUIDeveloperMode, true);
500 const Extension* extension = LoadSimpleExtension(); 501 const Extension* extension = LoadSimpleExtension();
501 502
502 // Report some errors. 503 // Report some errors.
503 ErrorConsole* error_console = ErrorConsole::Get(profile()); 504 ErrorConsole* error_console = ErrorConsole::Get(profile());
504 error_console->SetReportingAllForExtension(extension->id(), true); 505 error_console->SetReportingAllForExtension(extension->id(), true);
505 error_console->ReportError( 506 error_console->ReportError(
506 error_test_util::CreateNewRuntimeError(extension->id(), "foo")); 507 error_test_util::CreateNewRuntimeError(extension->id(), "foo"));
507 error_console->ReportError( 508 error_console->ReportError(
508 error_test_util::CreateNewRuntimeError(extension->id(), "bar")); 509 error_test_util::CreateNewRuntimeError(extension->id(), "bar"));
509 error_console->ReportError( 510 error_console->ReportError(
510 error_test_util::CreateNewManifestError(extension->id(), "baz")); 511 error_test_util::CreateNewManifestError(extension->id(), "baz"));
511 EXPECT_EQ(3u, error_console->GetErrorsForExtension(extension->id()).size()); 512 EXPECT_EQ(3u, error_console->GetErrorsForExtension(extension->id()).size());
512 513
513 // Start by removing all errors for the extension of a given type (manifest). 514 // Start by removing all errors for the extension of a given type (manifest).
514 std::string type_string = api::developer_private::ToString( 515 std::string type_string = api::developer_private::ToString(
515 api::developer_private::ERROR_TYPE_MANIFEST); 516 api::developer_private::ERROR_TYPE_MANIFEST);
516 scoped_ptr<base::ListValue> args = 517 std::unique_ptr<base::ListValue> args =
517 ListBuilder() 518 ListBuilder()
518 .Append(DictionaryBuilder() 519 .Append(DictionaryBuilder()
519 .Set("extensionId", extension->id()) 520 .Set("extensionId", extension->id())
520 .Set("type", type_string) 521 .Set("type", type_string)
521 .Build()) 522 .Build())
522 .Build(); 523 .Build();
523 scoped_refptr<UIThreadExtensionFunction> function = 524 scoped_refptr<UIThreadExtensionFunction> function =
524 new api::DeveloperPrivateDeleteExtensionErrorsFunction(); 525 new api::DeveloperPrivateDeleteExtensionErrorsFunction();
525 EXPECT_TRUE(RunFunction(function, *args)) << function->GetError(); 526 EXPECT_TRUE(RunFunction(function, *args)) << function->GetError();
526 // Two errors should remain. 527 // Two errors should remain.
(...skipping 21 matching lines...) Expand all
548 .Append( 549 .Append(
549 DictionaryBuilder().Set("extensionId", extension->id()).Build()) 550 DictionaryBuilder().Set("extensionId", extension->id()).Build())
550 .Build(); 551 .Build();
551 function = new api::DeveloperPrivateDeleteExtensionErrorsFunction(); 552 function = new api::DeveloperPrivateDeleteExtensionErrorsFunction();
552 EXPECT_TRUE(RunFunction(function, *args)) << function->GetError(); 553 EXPECT_TRUE(RunFunction(function, *args)) << function->GetError();
553 // No more errors! 554 // No more errors!
554 EXPECT_TRUE(error_console->GetErrorsForExtension(extension->id()).empty()); 555 EXPECT_TRUE(error_console->GetErrorsForExtension(extension->id()).empty());
555 } 556 }
556 557
557 } // namespace extensions 558 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698