diff options
author | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-25 08:31:17 +0000 |
---|---|---|
committer | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-25 08:31:17 +0000 |
commit | be77f0a531fda9ce5b911831f11848a7a87e4fb7 (patch) | |
tree | c677fd5f3b000180c33997f4dea4c4d152e86c46 /chrome/renderer/extensions | |
parent | a6ec2b5503d4914c03eb4439ba3ab3958eeccb9b (diff) | |
download | chromium_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')
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; |