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

Side by Side Diff: chrome/renderer/extensions/messaging_utils_unittest.cc

Issue 359413004: Add support for using AMD modules from extensions modules. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: extensions_renderer should depend on gin Created 6 years, 5 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "base/strings/stringprintf.h" 5 #include "base/strings/stringprintf.h"
6 #include "chrome/test/base/module_system_test.h" 6 #include "chrome/test/base/module_system_test.h"
7 #include "grit/extensions_renderer_resources.h" 7 #include "grit/extensions_renderer_resources.h"
8 8
9 namespace extensions { 9 namespace extensions {
10 namespace { 10 namespace {
11 11
12 class MessagingUtilsUnittest : public ModuleSystemTest { 12 class MessagingUtilsUnittest : public ModuleSystemTest {
13 protected: 13 protected:
14 void RegisterTestModule(const char* code) { 14 void RegisterTestModule(const char* code) {
15 RegisterModule("test", base::StringPrintf( 15 env()->RegisterModule(
16 "var assert = requireNative('assert');\n" 16 "test",
17 "var AssertTrue = assert.AssertTrue;\n" 17 base::StringPrintf(
18 "var AssertFalse = assert.AssertFalse;\n" 18 "var assert = requireNative('assert');\n"
19 "var messagingUtils = require('messaging_utils');\n" 19 "var AssertTrue = assert.AssertTrue;\n"
20 "%s", code)); 20 "var AssertFalse = assert.AssertFalse;\n"
21 "var messagingUtils = require('messaging_utils');\n"
22 "%s",
23 code));
21 } 24 }
22 25
23 private: 26 private:
24 virtual void SetUp() OVERRIDE { 27 virtual void SetUp() OVERRIDE {
25 ModuleSystemTest::SetUp(); 28 ModuleSystemTest::SetUp();
26 29
27 RegisterModule("messaging_utils", IDR_MESSAGING_UTILS_JS); 30 env()->RegisterModule("messaging_utils", IDR_MESSAGING_UTILS_JS);
28 } 31 }
29 32
30 }; 33 };
31 34
32 TEST_F(MessagingUtilsUnittest, TestNothing) { 35 TEST_F(MessagingUtilsUnittest, TestNothing) {
33 ExpectNoAssertionsMade(); 36 ExpectNoAssertionsMade();
34 } 37 }
35 38
36 TEST_F(MessagingUtilsUnittest, NoArguments) { 39 TEST_F(MessagingUtilsUnittest, NoArguments) {
37 ModuleSystem::NativesEnabledScope natives_enabled_scope( 40 ModuleSystem::NativesEnabledScope natives_enabled_scope(
38 context_->module_system()); 41 env()->module_system());
39 RegisterTestModule( 42 RegisterTestModule(
40 "var args = messagingUtils.alignSendMessageArguments();\n" 43 "var args = messagingUtils.alignSendMessageArguments();\n"
41 "AssertTrue(args === null);"); 44 "AssertTrue(args === null);");
42 context_->module_system()->Require("test"); 45 env()->module_system()->Require("test");
43 } 46 }
44 47
45 TEST_F(MessagingUtilsUnittest, ZeroArguments) { 48 TEST_F(MessagingUtilsUnittest, ZeroArguments) {
46 ModuleSystem::NativesEnabledScope natives_enabled_scope( 49 ModuleSystem::NativesEnabledScope natives_enabled_scope(
47 context_->module_system()); 50 env()->module_system());
48 RegisterTestModule( 51 RegisterTestModule(
49 "var args = messagingUtils.alignSendMessageArguments([]);" 52 "var args = messagingUtils.alignSendMessageArguments([]);"
50 "AssertTrue(args === null);"); 53 "AssertTrue(args === null);");
51 context_->module_system()->Require("test"); 54 env()->module_system()->Require("test");
52 } 55 }
53 56
54 TEST_F(MessagingUtilsUnittest, TooManyArgumentsNoOptions) { 57 TEST_F(MessagingUtilsUnittest, TooManyArgumentsNoOptions) {
55 ModuleSystem::NativesEnabledScope natives_enabled_scope( 58 ModuleSystem::NativesEnabledScope natives_enabled_scope(
56 context_->module_system()); 59 env()->module_system());
57 RegisterTestModule( 60 RegisterTestModule(
58 "var args = messagingUtils.alignSendMessageArguments(\n" 61 "var args = messagingUtils.alignSendMessageArguments(\n"
59 " ['a', 'b', 'c', 'd']);\n" 62 " ['a', 'b', 'c', 'd']);\n"
60 "AssertTrue(args === null);"); 63 "AssertTrue(args === null);");
61 context_->module_system()->Require("test"); 64 env()->module_system()->Require("test");
62 } 65 }
63 66
64 TEST_F(MessagingUtilsUnittest, TooManyArgumentsWithOptions) { 67 TEST_F(MessagingUtilsUnittest, TooManyArgumentsWithOptions) {
65 ModuleSystem::NativesEnabledScope natives_enabled_scope( 68 ModuleSystem::NativesEnabledScope natives_enabled_scope(
66 context_->module_system()); 69 env()->module_system());
67 RegisterTestModule( 70 RegisterTestModule(
68 "var args = messagingUtils.alignSendMessageArguments(\n" 71 "var args = messagingUtils.alignSendMessageArguments(\n"
69 " ['a', 'b', 'c', 'd', 'e'], true);\n" 72 " ['a', 'b', 'c', 'd', 'e'], true);\n"
70 "AssertTrue(args === null);"); 73 "AssertTrue(args === null);");
71 context_->module_system()->Require("test"); 74 env()->module_system()->Require("test");
72 } 75 }
73 76
74 TEST_F(MessagingUtilsUnittest, FinalArgumentIsNotAFunctionNoOptions) { 77 TEST_F(MessagingUtilsUnittest, FinalArgumentIsNotAFunctionNoOptions) {
75 ModuleSystem::NativesEnabledScope natives_enabled_scope( 78 ModuleSystem::NativesEnabledScope natives_enabled_scope(
76 context_->module_system()); 79 env()->module_system());
77 RegisterTestModule( 80 RegisterTestModule(
78 "var args = messagingUtils.alignSendMessageArguments(\n" 81 "var args = messagingUtils.alignSendMessageArguments(\n"
79 " ['a', 'b', 'c']);\n" 82 " ['a', 'b', 'c']);\n"
80 "AssertTrue(args === null);"); 83 "AssertTrue(args === null);");
81 context_->module_system()->Require("test"); 84 env()->module_system()->Require("test");
82 } 85 }
83 86
84 TEST_F(MessagingUtilsUnittest, FinalArgumentIsNotAFunctionWithOptions) { 87 TEST_F(MessagingUtilsUnittest, FinalArgumentIsNotAFunctionWithOptions) {
85 ModuleSystem::NativesEnabledScope natives_enabled_scope( 88 ModuleSystem::NativesEnabledScope natives_enabled_scope(
86 context_->module_system()); 89 env()->module_system());
87 RegisterTestModule( 90 RegisterTestModule(
88 "var args = messagingUtils.alignSendMessageArguments(\n" 91 "var args = messagingUtils.alignSendMessageArguments(\n"
89 " ['a', 'b', 'c', 'd'], true);\n" 92 " ['a', 'b', 'c', 'd'], true);\n"
90 "AssertTrue(args === null);"); 93 "AssertTrue(args === null);");
91 context_->module_system()->Require("test"); 94 env()->module_system()->Require("test");
92 } 95 }
93 96
94 TEST_F(MessagingUtilsUnittest, OneStringArgument) { 97 TEST_F(MessagingUtilsUnittest, OneStringArgument) {
95 ModuleSystem::NativesEnabledScope natives_enabled_scope( 98 ModuleSystem::NativesEnabledScope natives_enabled_scope(
96 context_->module_system()); 99 env()->module_system());
97 // Because the request argument is required, a single argument must get 100 // Because the request argument is required, a single argument must get
98 // mapped to it rather than to the optional targetId argument. 101 // mapped to it rather than to the optional targetId argument.
99 RegisterTestModule( 102 RegisterTestModule(
100 "var args = messagingUtils.alignSendMessageArguments(['a']);\n" 103 "var args = messagingUtils.alignSendMessageArguments(['a']);\n"
101 "AssertTrue(args.length == 3);\n" 104 "AssertTrue(args.length == 3);\n"
102 "AssertTrue(args[0] === null);\n" 105 "AssertTrue(args[0] === null);\n"
103 "AssertTrue(args[1] == 'a');\n" 106 "AssertTrue(args[1] == 'a');\n"
104 "AssertTrue(args[2] === null);"); 107 "AssertTrue(args[2] === null);");
105 context_->module_system()->Require("test"); 108 env()->module_system()->Require("test");
106 } 109 }
107 110
108 TEST_F(MessagingUtilsUnittest, OneStringAndOneNullArgument) { 111 TEST_F(MessagingUtilsUnittest, OneStringAndOneNullArgument) {
109 ModuleSystem::NativesEnabledScope natives_enabled_scope( 112 ModuleSystem::NativesEnabledScope natives_enabled_scope(
110 context_->module_system()); 113 env()->module_system());
111 // Explicitly specifying null as the request is allowed. 114 // Explicitly specifying null as the request is allowed.
112 RegisterTestModule( 115 RegisterTestModule(
113 "var args = messagingUtils.alignSendMessageArguments(['a', null]);\n" 116 "var args = messagingUtils.alignSendMessageArguments(['a', null]);\n"
114 "AssertTrue(args.length == 3);\n" 117 "AssertTrue(args.length == 3);\n"
115 "AssertTrue(args[0] == 'a');\n" 118 "AssertTrue(args[0] == 'a');\n"
116 "AssertTrue(args[1] === null);\n" 119 "AssertTrue(args[1] === null);\n"
117 "AssertTrue(args[2] === null);"); 120 "AssertTrue(args[2] === null);");
118 context_->module_system()->Require("test"); 121 env()->module_system()->Require("test");
119 } 122 }
120 123
121 TEST_F(MessagingUtilsUnittest, OneNullAndOneStringArgument) { 124 TEST_F(MessagingUtilsUnittest, OneNullAndOneStringArgument) {
122 ModuleSystem::NativesEnabledScope natives_enabled_scope( 125 ModuleSystem::NativesEnabledScope natives_enabled_scope(
123 context_->module_system()); 126 env()->module_system());
124 RegisterTestModule( 127 RegisterTestModule(
125 "var args = messagingUtils.alignSendMessageArguments([null, 'a']);\n" 128 "var args = messagingUtils.alignSendMessageArguments([null, 'a']);\n"
126 "AssertTrue(args.length == 3);\n" 129 "AssertTrue(args.length == 3);\n"
127 "AssertTrue(args[0] === null);\n" 130 "AssertTrue(args[0] === null);\n"
128 "AssertTrue(args[1] == 'a');\n" 131 "AssertTrue(args[1] == 'a');\n"
129 "AssertTrue(args[2] === null);"); 132 "AssertTrue(args[2] === null);");
130 context_->module_system()->Require("test"); 133 env()->module_system()->Require("test");
131 } 134 }
132 135
133 TEST_F(MessagingUtilsUnittest, OneStringAndOneFunctionArgument) { 136 TEST_F(MessagingUtilsUnittest, OneStringAndOneFunctionArgument) {
134 ModuleSystem::NativesEnabledScope natives_enabled_scope( 137 ModuleSystem::NativesEnabledScope natives_enabled_scope(
135 context_->module_system()); 138 env()->module_system());
136 // When the arguments are a string and a function, the function is 139 // When the arguments are a string and a function, the function is
137 // unambiguously the responseCallback. Because the request argument is 140 // unambiguously the responseCallback. Because the request argument is
138 // required, the remaining argument must get mapped to it rather than to the 141 // required, the remaining argument must get mapped to it rather than to the
139 // optional targetId argument. 142 // optional targetId argument.
140 RegisterTestModule( 143 RegisterTestModule(
141 "var cb = function() {};\n" 144 "var cb = function() {};\n"
142 "var args = messagingUtils.alignSendMessageArguments(['a', cb]);\n" 145 "var args = messagingUtils.alignSendMessageArguments(['a', cb]);\n"
143 "AssertTrue(args.length == 3);\n" 146 "AssertTrue(args.length == 3);\n"
144 "AssertTrue(args[0] === null);\n" 147 "AssertTrue(args[0] === null);\n"
145 "AssertTrue(args[1] == 'a');\n" 148 "AssertTrue(args[1] == 'a');\n"
146 "AssertTrue(args[2] == cb);"); 149 "AssertTrue(args[2] == cb);");
147 context_->module_system()->Require("test"); 150 env()->module_system()->Require("test");
148 } 151 }
149 152
150 TEST_F(MessagingUtilsUnittest, OneStringAndOneObjectArgument) { 153 TEST_F(MessagingUtilsUnittest, OneStringAndOneObjectArgument) {
151 ModuleSystem::NativesEnabledScope natives_enabled_scope( 154 ModuleSystem::NativesEnabledScope natives_enabled_scope(
152 context_->module_system()); 155 env()->module_system());
153 // This tests an ambiguous set of arguments when options are present: 156 // This tests an ambiguous set of arguments when options are present:
154 // chrome.runtime.sendMessage('target', {'msg': 'this is a message'}); 157 // chrome.runtime.sendMessage('target', {'msg': 'this is a message'});
155 // vs. 158 // vs.
156 // chrome.runtime.sendMessage('request', {'includeTlsChannelId': true}); 159 // chrome.runtime.sendMessage('request', {'includeTlsChannelId': true});
157 // 160 //
158 // The question is whether the string should map to the target and the 161 // The question is whether the string should map to the target and the
159 // dictionary to the message, or whether the string should map to the message 162 // dictionary to the message, or whether the string should map to the message
160 // and the dictionary to the options. Because the target and message arguments 163 // and the dictionary to the options. Because the target and message arguments
161 // predate the options argument, we bind the string in this case to the 164 // predate the options argument, we bind the string in this case to the
162 // targetId. 165 // targetId.
163 RegisterTestModule( 166 RegisterTestModule(
164 "var obj = {'b': true};\n" 167 "var obj = {'b': true};\n"
165 "var args = messagingUtils.alignSendMessageArguments(['a', obj], true);\n" 168 "var args = messagingUtils.alignSendMessageArguments(['a', obj], true);\n"
166 "AssertTrue(args.length == 4);\n" 169 "AssertTrue(args.length == 4);\n"
167 "AssertTrue(args[0] == 'a');\n" 170 "AssertTrue(args[0] == 'a');\n"
168 "AssertTrue(args[1] == obj);\n" 171 "AssertTrue(args[1] == obj);\n"
169 "AssertTrue(args[2] === null);\n" 172 "AssertTrue(args[2] === null);\n"
170 "AssertTrue(args[3] === null);"); 173 "AssertTrue(args[3] === null);");
171 context_->module_system()->Require("test"); 174 env()->module_system()->Require("test");
172 } 175 }
173 176
174 TEST_F(MessagingUtilsUnittest, TwoObjectArguments) { 177 TEST_F(MessagingUtilsUnittest, TwoObjectArguments) {
175 ModuleSystem::NativesEnabledScope natives_enabled_scope( 178 ModuleSystem::NativesEnabledScope natives_enabled_scope(
176 context_->module_system()); 179 env()->module_system());
177 // When two non-string arguments are provided and options are present, the 180 // When two non-string arguments are provided and options are present, the
178 // two arguments must match request and options, respectively, because 181 // two arguments must match request and options, respectively, because
179 // targetId must be a string. 182 // targetId must be a string.
180 RegisterTestModule( 183 RegisterTestModule(
181 "var obj1 = {'a': 'foo'};\n" 184 "var obj1 = {'a': 'foo'};\n"
182 "var obj2 = {'b': 'bar'};\n" 185 "var obj2 = {'b': 'bar'};\n"
183 "var args = messagingUtils.alignSendMessageArguments(\n" 186 "var args = messagingUtils.alignSendMessageArguments(\n"
184 " [obj1, obj2], true);\n" 187 " [obj1, obj2], true);\n"
185 "AssertTrue(args.length == 4);\n" 188 "AssertTrue(args.length == 4);\n"
186 "AssertTrue(args[0] === null);\n" 189 "AssertTrue(args[0] === null);\n"
187 "AssertTrue(args[1] == obj1);\n" 190 "AssertTrue(args[1] == obj1);\n"
188 "AssertTrue(args[2] == obj2);\n" 191 "AssertTrue(args[2] == obj2);\n"
189 "AssertTrue(args[3] === null);"); 192 "AssertTrue(args[3] === null);");
190 context_->module_system()->Require("test"); 193 env()->module_system()->Require("test");
191 } 194 }
192 195
193 } // namespace 196 } // namespace
194 } // namespace extensions 197 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/renderer/extensions/json_schema_unittest.cc ('k') | chrome/renderer/extensions/module_system_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698