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

Unified Diff: ios/web/web_state/js/common_js_unittest.mm

Issue 2807213003: Move stringify, form, navigation and scroll methods out of core.js. (Closed)
Patch Set: Re-upload patch after rebase-update in local branch Created 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ios/web/BUILD.gn ('k') | ios/web/web_state/js/core_js_unittest.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ios/web/web_state/js/common_js_unittest.mm
diff --git a/ios/web/web_state/js/common_js_unittest.mm b/ios/web/web_state/js/common_js_unittest.mm
index 5e10f768660dd2f8406abb84c5246eb193603978..42505ced5afae6f3540176ac4e7d6386d1449156 100644
--- a/ios/web/web_state/js/common_js_unittest.mm
+++ b/ios/web/web_state/js/common_js_unittest.mm
@@ -6,6 +6,7 @@
#import <Foundation/Foundation.h>
#include "base/macros.h"
+#include "base/strings/sys_string_conversions.h"
#import "ios/web/public/test/web_test_with_web_state.h"
#include "testing/gtest/include/gtest/gtest.h"
#import "testing/gtest_mac.h"
@@ -22,6 +23,12 @@ struct TextFieldTestElement {
const bool expected_is_text_field;
};
+// Struct for stringify() test data.
+struct TestScriptAndExpectedValue {
+ NSString* test_script;
+ id expected_value;
+};
+
} // namespace
namespace web {
@@ -87,4 +94,48 @@ TEST_F(CommonJsTest, IsTestField) {
}
}
+// Tests __gCrWeb.stringify JavaScript API.
+TEST_F(CommonJsTest, Stringify) {
+ TestScriptAndExpectedValue test_data[] = {
+ // Stringify a string that contains various characters that must
+ // be escaped.
+ {@"__gCrWeb.stringify('a\\u000a\\t\\b\\\\\\\"Z')",
+ @"\"a\\n\\t\\b\\\\\\\"Z\""},
+ // Stringify a number.
+ {@"__gCrWeb.stringify(77.7)", @"77.7"},
+ // Stringify an array.
+ {@"__gCrWeb.stringify(['a','b'])", @"[\"a\",\"b\"]"},
+ // Stringify an object.
+ {@"__gCrWeb.stringify({'a':'b','c':'d'})", @"{\"a\":\"b\",\"c\":\"d\"}"},
+ // Stringify a hierarchy of objects and arrays.
+ {@"__gCrWeb.stringify([{'a':['b','c'],'d':'e'},'f'])",
+ @"[{\"a\":[\"b\",\"c\"],\"d\":\"e\"},\"f\"]"},
+ // Stringify null.
+ {@"__gCrWeb.stringify(null)", @"null"},
+ // Stringify an object with a toJSON function.
+ {@"temp = [1,2];"
+ "temp.toJSON = function (key) {return undefined};"
+ "__gCrWeb.stringify(temp)",
+ @"[1,2]"},
+ // Stringify an object with a toJSON property that is not a function.
+ {@"temp = [1,2];"
+ "temp.toJSON = 42;"
+ "__gCrWeb.stringify(temp)",
+ @"[1,2]"},
+ // Stringify an undefined object.
+ {@"__gCrWeb.stringify(undefined)", @"undefined"},
+ };
+
+ for (size_t i = 0; i < arraysize(test_data); i++) {
+ TestScriptAndExpectedValue& data = test_data[i];
+ // Load a sample HTML page. As a side-effect, loading HTML via
+ // |webController_| will also inject core.js.
+ LoadHtml(@"<p>");
+ id result = ExecuteJavaScript(data.test_script);
+ EXPECT_NSEQ(data.expected_value, result)
+ << " in test " << i << ": "
+ << base::SysNSStringToUTF8(data.test_script);
+ }
+}
+
} // namespace web
« no previous file with comments | « ios/web/BUILD.gn ('k') | ios/web/web_state/js/core_js_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698