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

Side by Side Diff: extensions/common/extension_messages_unittest.cc

Issue 2279013002: [Extensions] Fix ExtensionMsg_Loaded_Params (Closed)
Patch Set: polish Created 4 years, 3 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
(Empty)
1 // Copyright 2016 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
5 #include "components/crx_file/id_util.h"
6 #include "extensions/common/extension.h"
7 #include "extensions/common/extension_builder.h"
8 #include "extensions/common/extension_messages.h"
9 #include "extensions/common/manifest_handlers/permissions_parser.h"
10 #include "extensions/common/permissions/extensions_api_permissions.h"
11 #include "extensions/common/permissions/permissions_data.h"
12 #include "extensions/common/value_builder.h"
13 #include "ipc/ipc_message.h"
14 #include "testing/gtest/include/gtest/gtest.h"
15
16 namespace extensions {
17
18 namespace {
19
20 void CompareExtension(const Extension& extension1,
21 const Extension& extension2) {
22 EXPECT_EQ(extension1.name(), extension2.name());
23 EXPECT_EQ(extension1.id(), extension2.id());
24 EXPECT_EQ(extension1.path(), extension2.path());
25 EXPECT_EQ(extension1.permissions_data()->active_permissions(),
26 extension2.permissions_data()->active_permissions());
27 EXPECT_TRUE(extension1.manifest()->Equals(extension2.manifest()));
28 const PermissionsData::TabPermissionsMap& second_tab_permissions =
29 extension2.permissions_data()->tab_specific_permissions();
30 for (const auto& tab_permissions :
31 extension1.permissions_data()->tab_specific_permissions()) {
32 ASSERT_NE(0u, second_tab_permissions.count(tab_permissions.first));
33 EXPECT_EQ(*tab_permissions.second,
34 *(second_tab_permissions.at(tab_permissions.first)))
35 << tab_permissions.first;
36 }
37 }
38
39 } // namespace
40
41 TEST(ExtensionMessageTypesTest, TestLoadedParams) {
42 std::unique_ptr<base::DictionaryValue> manifest =
43 DictionaryBuilder()
44 .Set("name", "extension")
45 .Set("description", "an extension")
46 .Set("permissions", ListBuilder().Append("alarms").Build())
47 .Set("manifest_version", 2)
48 .Set("version", "0.1")
49 .Build();
50 scoped_refptr<const Extension> extension =
51 ExtensionBuilder()
52 .SetManifest(std::move(manifest))
53 .SetID(crx_file::id_util::GenerateId("foo"))
54 .Build();
55 const PermissionSet& required_permissions =
56 PermissionsParser::GetRequiredPermissions(extension.get());
57 LOG(WARNING) << required_permissions.apis().size();
58 EXPECT_TRUE(
59 extension->permissions_data()->HasAPIPermission(APIPermission::kAlarms));
60 APIPermissionSet tab_permissions;
61 tab_permissions.insert(APIPermission::kDns);
62 extension->permissions_data()->UpdateTabSpecificPermissions(
63 1, PermissionSet(tab_permissions, ManifestPermissionSet(),
64 URLPatternSet(), URLPatternSet()));
65
66 ExtensionMsg_Loaded_Params params_in(extension.get(), true);
67 EXPECT_EQ(extension->id(), params_in.id);
68
69 {
70 // First, test just converting back to an extension.
71 std::string error;
72 scoped_refptr<const Extension> extension_out =
73 params_in.ConvertToExtension(&error);
74 EXPECT_TRUE(error.empty());
75 ASSERT_TRUE(extension_out);
76 CompareExtension(*extension, *extension_out);
77 }
78
79 {
80 // Second, try bouncing the params and then converting back.
81 IPC::Message msg;
82 IPC::ParamTraits<ExtensionMsg_Loaded_Params>::Write(&msg, params_in);
83 ExtensionMsg_Loaded_Params params_out;
84 base::PickleIterator iter(msg);
85 EXPECT_TRUE(IPC::ParamTraits<ExtensionMsg_Loaded_Params>::Read(
86 &msg, &iter, &params_out));
87
88 EXPECT_EQ(params_in.id, params_out.id);
89 EXPECT_TRUE(params_in.manifest->Equals(params_out.manifest.get()));
90 EXPECT_EQ(params_in.location, params_out.location);
91 EXPECT_EQ(params_in.path, params_out.path);
92 EXPECT_EQ(params_in.creation_flags, params_out.creation_flags);
93 // Permission equaliy on the params will be tested through the conversion to
94 // an extension.
95
96 std::string error;
97 scoped_refptr<const Extension> extension_out =
98 params_out.ConvertToExtension(&error);
99 EXPECT_TRUE(error.empty());
100 ASSERT_TRUE(extension_out);
101 CompareExtension(*extension, *extension_out);
102 }
103 }
104
105 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698