summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/extensions
diff options
context:
space:
mode:
authoraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-25 08:31:17 +0000
committeraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-25 08:31:17 +0000
commitbe77f0a531fda9ce5b911831f11848a7a87e4fb7 (patch)
treec677fd5f3b000180c33997f4dea4c4d152e86c46 /chrome/renderer/extensions
parenta6ec2b5503d4914c03eb4439ba3ab3958eeccb9b (diff)
downloadchromium_src-be77f0a531fda9ce5b911831f11848a7a87e4fb7.zip
chromium_src-be77f0a531fda9ce5b911831f11848a7a87e4fb7.tar.gz
chromium_src-be77f0a531fda9ce5b911831f11848a7a87e4fb7.tar.bz2
Try again to commit r24174: Change the way json_schema.js is loaded.
TBR=mpcomplete@chromium.org git-svn-id: svn://svn.chromium.org/chrome/trunk/src@24224 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/extensions')
-rw-r--r--chrome/renderer/extensions/event_bindings.cc2
-rw-r--r--chrome/renderer/extensions/extension_process_bindings.cc2
-rw-r--r--chrome/renderer/extensions/js_only_v8_extensions.cc29
-rw-r--r--chrome/renderer/extensions/js_only_v8_extensions.h25
-rw-r--r--chrome/renderer/extensions/json_schema_unittest.cc16
5 files changed, 69 insertions, 5 deletions
diff --git a/chrome/renderer/extensions/event_bindings.cc b/chrome/renderer/extensions/event_bindings.cc
index b2cecdc..416ab2c 100644
--- a/chrome/renderer/extensions/event_bindings.cc
+++ b/chrome/renderer/extensions/event_bindings.cc
@@ -10,7 +10,7 @@
#include "chrome/common/url_constants.h"
#include "chrome/renderer/extensions/bindings_utils.h"
#include "chrome/renderer/extensions/event_bindings.h"
-#include "chrome/renderer/js_only_v8_extensions.h"
+#include "chrome/renderer/extensions/js_only_v8_extensions.h"
#include "chrome/renderer/render_thread.h"
#include "chrome/renderer/render_view.h"
#include "grit/renderer_resources.h"
diff --git a/chrome/renderer/extensions/extension_process_bindings.cc b/chrome/renderer/extensions/extension_process_bindings.cc
index ed56ba5..7fc6bda 100644
--- a/chrome/renderer/extensions/extension_process_bindings.cc
+++ b/chrome/renderer/extensions/extension_process_bindings.cc
@@ -11,8 +11,8 @@
#include "chrome/common/url_constants.h"
#include "chrome/renderer/extensions/bindings_utils.h"
#include "chrome/renderer/extensions/event_bindings.h"
+#include "chrome/renderer/extensions/js_only_v8_extensions.h"
#include "chrome/renderer/extensions/renderer_extension_bindings.h"
-#include "chrome/renderer/js_only_v8_extensions.h"
#include "chrome/renderer/render_view.h"
#include "grit/common_resources.h"
#include "grit/renderer_resources.h"
diff --git a/chrome/renderer/extensions/js_only_v8_extensions.cc b/chrome/renderer/extensions/js_only_v8_extensions.cc
new file mode 100644
index 0000000..986e656
--- /dev/null
+++ b/chrome/renderer/extensions/js_only_v8_extensions.cc
@@ -0,0 +1,29 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/renderer/extensions/js_only_v8_extensions.h"
+
+#include "chrome/renderer/extensions/bindings_utils.h"
+#include "grit/renderer_resources.h"
+#include "grit/webkit_resources.h"
+
+using bindings_utils::GetStringResource;
+
+// BaseJsV8Extension
+const char* BaseJsV8Extension::kName = "chrome/base";
+v8::Extension* BaseJsV8Extension::Get() {
+ static v8::Extension* extension =
+ new bindings_utils::ExtensionBase(
+ kName, GetStringResource<IDR_DEVTOOLS_BASE_JS>(), 0, NULL);
+ return extension;
+}
+
+// JsonSchemaJsV8Extension
+const char* JsonSchemaJsV8Extension::kName = "chrome/jsonschema";
+v8::Extension* JsonSchemaJsV8Extension::Get() {
+ static v8::Extension* extension =
+ new bindings_utils::ExtensionBase(
+ kName, GetStringResource<IDR_JSON_SCHEMA_JS>(), 0, NULL);
+ return extension;
+}
diff --git a/chrome/renderer/extensions/js_only_v8_extensions.h b/chrome/renderer/extensions/js_only_v8_extensions.h
new file mode 100644
index 0000000..58f9861
--- /dev/null
+++ b/chrome/renderer/extensions/js_only_v8_extensions.h
@@ -0,0 +1,25 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_RENDERER_EXTENSIONS_JS_ONLY_V8_EXTENSIONS_H_
+#define CHROME_RENDERER_EXTENSIONS_JS_ONLY_V8_EXTENSIONS_H_
+
+#include "v8/include/v8.h"
+
+// This file contains various V8 Extensions that are JavaScript only, and
+// don't have any C++ native functions.
+
+class BaseJsV8Extension {
+ public:
+ static const char* kName;
+ static v8::Extension* Get();
+};
+
+class JsonSchemaJsV8Extension {
+ public:
+ static const char* kName;
+ static v8::Extension* Get();
+};
+
+#endif // CHROME_RENDERER_JS_ONLY_V8_EXTENSIONS_H_
diff --git a/chrome/renderer/extensions/json_schema_unittest.cc b/chrome/renderer/extensions/json_schema_unittest.cc
index 9b53094..a83693a 100644
--- a/chrome/renderer/extensions/json_schema_unittest.cc
+++ b/chrome/renderer/extensions/json_schema_unittest.cc
@@ -23,9 +23,19 @@ class JsonSchemaTest : public V8UnitTest {
V8UnitTest::SetUp();
// Add the json schema code to the context.
- StringPiece js = ResourceBundle::GetSharedInstance().GetRawDataResource(
- IDR_JSON_SCHEMA_JS);
- ExecuteScriptInContext(js, kJsonSchema);
+ std::string code = ResourceBundle::GetSharedInstance().GetRawDataResource(
+ IDR_JSON_SCHEMA_JS).as_string();
+
+ // This is a nasty hack, but it is easier to test the code if we don't use
+ // it as a v8 extension. So replace the only bit that relies on that with a
+ // more easily testable implementation.
+ ReplaceFirstSubstringAfterOffset(&code, 0,
+ "native function GetChromeHidden();",
+ "function GetChromeHidden() {\n"
+ " if (!this.chromeHidden) this.chromeHidden = {};\n"
+ " return this.chromeHidden;\n"
+ "}");
+ ExecuteScriptInContext(code, kJsonSchema);
// Add the test functions to the context.
FilePath test_js_file_path;