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

Side by Side Diff: content/browser/webui/web_ui_mojo_browsertest.cc

Issue 247013008: Add support for Float/Double types for JS Mojo bindings. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: M_PI not present on some of the windows platforms. Created 6 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | content/test/data/web_ui_test_mojo_bindings.mojom » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 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 <limits>
6
5 #include "base/command_line.h" 7 #include "base/command_line.h"
6 #include "base/file_util.h" 8 #include "base/file_util.h"
7 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
8 #include "base/path_service.h" 10 #include "base/path_service.h"
9 #include "base/run_loop.h" 11 #include "base/run_loop.h"
10 #include "base/strings/string_util.h" 12 #include "base/strings/string_util.h"
11 #include "content/browser/webui/web_ui_controller_factory_registry.h" 13 #include "content/browser/webui/web_ui_controller_factory_registry.h"
12 #include "content/public/browser/browser_context.h" 14 #include "content/public/browser/browser_context.h"
13 #include "content/public/browser/render_view_host.h" 15 #include "content/public/browser/render_view_host.h"
14 #include "content/public/browser/web_contents.h" 16 #include "content/public/browser/web_contents.h"
(...skipping 25 matching lines...) Expand all
40 const int32 kExpectedInt32Value = -1145258561; 42 const int32 kExpectedInt32Value = -1145258561;
41 const int64 kExpectedInt64Value = -77263311946305LL; 43 const int64 kExpectedInt64Value = -77263311946305LL;
42 44
43 // Positive numbers with different values in each byte, the last of 45 // Positive numbers with different values in each byte, the last of
44 // which can survive promotion to double and back. 46 // which can survive promotion to double and back.
45 const uint8 kExpectedUInt8Value = 65; 47 const uint8 kExpectedUInt8Value = 65;
46 const uint16 kExpectedUInt16Value = 16961; 48 const uint16 kExpectedUInt16Value = 16961;
47 const uint32 kExpectedUInt32Value = 1145258561; 49 const uint32 kExpectedUInt32Value = 1145258561;
48 const uint64 kExpectedUInt64Value = 77263311946305LL; 50 const uint64 kExpectedUInt64Value = 77263311946305LL;
49 51
52 // Double/float values, including special case constants.
53 const double kExpectedDoubleVal = 3.14159265358979323846;
54 const double kExpectedDoubleInf = std::numeric_limits<double>::infinity();
55 const double kExpectedDoubleNan = std::numeric_limits<double>::quiet_NaN();
56 const float kExpectedFloatVal = static_cast<float>(kExpectedDoubleVal);
57 const float kExpectedFloatInf = std::numeric_limits<float>::infinity();
58 const float kExpectedFloatNan = std::numeric_limits<float>::quiet_NaN();
59
60 // NaN has the property that it is not equal to itself.
61 #define EXPECT_NAN(x) EXPECT_NE(x, x)
62
50 // Returns the path to the mojom js bindings file. 63 // Returns the path to the mojom js bindings file.
51 base::FilePath GetFilePathForJSResource(const std::string& path) { 64 base::FilePath GetFilePathForJSResource(const std::string& path) {
52 std::string binding_path = "gen/" + path + ".js"; 65 std::string binding_path = "gen/" + path + ".js";
53 #if defined(OS_WIN) 66 #if defined(OS_WIN)
54 std::string tmp; 67 std::string tmp;
55 base::ReplaceChars(binding_path, "//", "\\", &tmp); 68 base::ReplaceChars(binding_path, "//", "\\", &tmp);
56 binding_path.swap(tmp); 69 binding_path.swap(tmp);
57 #endif 70 #endif
58 base::FilePath file_path; 71 base::FilePath file_path;
59 PathService::Get(CHILD_PROCESS_EXE, &file_path); 72 PathService::Get(CHILD_PROCESS_EXE, &file_path);
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 mojo::AllocationScope scope; 150 mojo::AllocationScope scope;
138 mojo::EchoArgs::Builder builder; 151 mojo::EchoArgs::Builder builder;
139 builder.set_si64(kExpectedInt64Value); 152 builder.set_si64(kExpectedInt64Value);
140 builder.set_si32(kExpectedInt32Value); 153 builder.set_si32(kExpectedInt32Value);
141 builder.set_si16(kExpectedInt16Value); 154 builder.set_si16(kExpectedInt16Value);
142 builder.set_si8(kExpectedInt8Value); 155 builder.set_si8(kExpectedInt8Value);
143 builder.set_ui64(kExpectedUInt64Value); 156 builder.set_ui64(kExpectedUInt64Value);
144 builder.set_ui32(kExpectedUInt32Value); 157 builder.set_ui32(kExpectedUInt32Value);
145 builder.set_ui16(kExpectedUInt16Value); 158 builder.set_ui16(kExpectedUInt16Value);
146 builder.set_ui8(kExpectedUInt8Value); 159 builder.set_ui8(kExpectedUInt8Value);
160 builder.set_float_val(kExpectedFloatVal);
161 builder.set_float_inf(kExpectedFloatInf);
162 builder.set_float_nan(kExpectedFloatNan);
163 builder.set_double_val(kExpectedDoubleVal);
164 builder.set_double_inf(kExpectedDoubleInf);
165 builder.set_double_nan(kExpectedDoubleNan);
147 builder.set_name("coming"); 166 builder.set_name("coming");
148 client_->Echo(builder.Finish()); 167 client_->Echo(builder.Finish());
149 } 168 }
150 169
151 virtual ~EchoBrowserTargetImpl() {} 170 virtual ~EchoBrowserTargetImpl() {}
152 171
153 // mojo::BrowserTarget overrides: 172 // mojo::BrowserTarget overrides:
154 // Check the response, and quit the RunLoop after N calls. 173 // Check the response, and quit the RunLoop after N calls.
155 virtual void EchoResponse(const mojo::EchoArgs& arg1, 174 virtual void EchoResponse(const mojo::EchoArgs& arg1,
156 const mojo::EchoArgs& arg2) OVERRIDE { 175 const mojo::EchoArgs& arg2) OVERRIDE {
157 EXPECT_EQ(kExpectedInt64Value, arg1.si64()); 176 EXPECT_EQ(kExpectedInt64Value, arg1.si64());
158 EXPECT_EQ(kExpectedInt32Value, arg1.si32()); 177 EXPECT_EQ(kExpectedInt32Value, arg1.si32());
159 EXPECT_EQ(kExpectedInt16Value, arg1.si16()); 178 EXPECT_EQ(kExpectedInt16Value, arg1.si16());
160 EXPECT_EQ(kExpectedInt8Value, arg1.si8()); 179 EXPECT_EQ(kExpectedInt8Value, arg1.si8());
161 EXPECT_EQ(kExpectedUInt64Value, arg1.ui64()); 180 EXPECT_EQ(kExpectedUInt64Value, arg1.ui64());
162 EXPECT_EQ(kExpectedUInt32Value, arg1.ui32()); 181 EXPECT_EQ(kExpectedUInt32Value, arg1.ui32());
163 EXPECT_EQ(kExpectedUInt16Value, arg1.ui16()); 182 EXPECT_EQ(kExpectedUInt16Value, arg1.ui16());
164 EXPECT_EQ(kExpectedUInt8Value, arg1.ui8()); 183 EXPECT_EQ(kExpectedUInt8Value, arg1.ui8());
184 EXPECT_EQ(kExpectedFloatVal, arg1.float_val());
185 EXPECT_EQ(kExpectedFloatInf, arg1.float_inf());
186 EXPECT_NAN(arg1.float_nan());
187 EXPECT_EQ(kExpectedDoubleVal, arg1.double_val());
188 EXPECT_EQ(kExpectedDoubleInf, arg1.double_inf());
189 EXPECT_NAN(arg1.double_nan());
165 EXPECT_EQ(std::string("coming"), arg1.name().To<std::string>()); 190 EXPECT_EQ(std::string("coming"), arg1.name().To<std::string>());
166 191
167 EXPECT_EQ(-1, arg2.si64()); 192 EXPECT_EQ(-1, arg2.si64());
168 EXPECT_EQ(-1, arg2.si32()); 193 EXPECT_EQ(-1, arg2.si32());
169 EXPECT_EQ(-1, arg2.si16()); 194 EXPECT_EQ(-1, arg2.si16());
170 EXPECT_EQ(-1, arg2.si8()); 195 EXPECT_EQ(-1, arg2.si8());
171 EXPECT_EQ(std::string("going"), arg2.name().To<std::string>()); 196 EXPECT_EQ(std::string("going"), arg2.name().To<std::string>());
172 197
173 message_count += 1; 198 message_count += 1;
174 if (message_count == kExpectedMessageCount) 199 if (message_count == kExpectedMessageCount)
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
349 factory()->set_run_loop(&run_loop); 374 factory()->set_run_loop(&run_loop);
350 GURL test_url(test_server()->GetURL("files/web_ui_mojo.html?echo")); 375 GURL test_url(test_server()->GetURL("files/web_ui_mojo.html?echo"));
351 NavigateToURL(shell(), test_url); 376 NavigateToURL(shell(), test_url);
352 // RunLoop is quit when response received from page. 377 // RunLoop is quit when response received from page.
353 run_loop.Run(); 378 run_loop.Run();
354 EXPECT_EQ(kExpectedMessageCount, message_count); 379 EXPECT_EQ(kExpectedMessageCount, message_count);
355 } 380 }
356 381
357 } // namespace 382 } // namespace
358 } // namespace content 383 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | content/test/data/web_ui_test_mojo_bindings.mojom » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698