summaryrefslogtreecommitdiffstats
path: root/extensions/renderer/utils_native_handler.cc
diff options
context:
space:
mode:
authorpneubeck@chromium.org <pneubeck@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-20 21:54:29 +0000
committerpneubeck@chromium.org <pneubeck@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-20 21:54:29 +0000
commit0d17cd746d7e442296e6ab5d99573a2271487806 (patch)
tree48b64bb55cea0ebceffec0e88e5dd0b4db7d1a16 /extensions/renderer/utils_native_handler.cc
parent8d42db5bdc8f9f8cd7a041895a78003fc42bab2b (diff)
downloadchromium_src-0d17cd746d7e442296e6ab5d99573a2271487806.zip
chromium_src-0d17cd746d7e442296e6ab5d99573a2271487806.tar.gz
chromium_src-0d17cd746d7e442296e6ab5d99573a2271487806.tar.bz2
enterprise.platformKeys: Copy-on-read the 'algorithm' member of Key objects.
With this change, a Key object's algorithm member is copied on every read access. Effectively preventing it's modification as required by the WebCrypto specification. BUG=385143 R=bartfab@chromium.org, kalman@chromium.org Review URL: https://codereview.chromium.org/332233002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@278833 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'extensions/renderer/utils_native_handler.cc')
-rw-r--r--extensions/renderer/utils_native_handler.cc11
1 files changed, 11 insertions, 0 deletions
diff --git a/extensions/renderer/utils_native_handler.cc b/extensions/renderer/utils_native_handler.cc
index 1c0941f..a59cc7c 100644
--- a/extensions/renderer/utils_native_handler.cc
+++ b/extensions/renderer/utils_native_handler.cc
@@ -7,6 +7,7 @@
#include "base/strings/stringprintf.h"
#include "extensions/renderer/script_context.h"
#include "third_party/WebKit/public/web/WebScopedMicrotaskSuppression.h"
+#include "third_party/WebKit/public/web/WebSerializedScriptValue.h"
namespace extensions {
@@ -15,6 +16,9 @@ UtilsNativeHandler::UtilsNativeHandler(ScriptContext* context)
RouteFunction("createClassWrapper",
base::Bind(&UtilsNativeHandler::CreateClassWrapper,
base::Unretained(this)));
+ RouteFunction(
+ "deepCopy",
+ base::Bind(&UtilsNativeHandler::DeepCopy, base::Unretained(this)));
}
UtilsNativeHandler::~UtilsNativeHandler() {}
@@ -81,4 +85,11 @@ void UtilsNativeHandler::CreateClassWrapper(
args.GetReturnValue().Set(result);
}
+void UtilsNativeHandler::DeepCopy(
+ const v8::FunctionCallbackInfo<v8::Value>& args) {
+ CHECK_EQ(1, args.Length());
+ args.GetReturnValue().Set(
+ blink::WebSerializedScriptValue::serialize(args[0]).deserialize());
+}
+
} // namespace extensions