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

Unified Diff: content/renderer/v8_value_converter_impl.cc

Issue 19730002: V8ValueConverter for the activity logger that does not invoke interceptors and (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Ben's comments Created 7 years, 4 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
Index: content/renderer/v8_value_converter_impl.cc
diff --git a/content/renderer/v8_value_converter_impl.cc b/content/renderer/v8_value_converter_impl.cc
index cb4b9af00f1c667ded643d7c3735833225e43272..187aba53c160516b1a3f99b3b4e859d14929c9fb 100644
--- a/content/renderer/v8_value_converter_impl.cc
+++ b/content/renderer/v8_value_converter_impl.cc
@@ -86,7 +86,8 @@ V8ValueConverterImpl::V8ValueConverterImpl()
reg_exp_allowed_(false),
function_allowed_(false),
strip_null_from_objects_(false),
- avoid_identity_hash_for_testing_(false) {}
+ avoid_identity_hash_for_testing_(false),
+ strategy_(NULL) {}
void V8ValueConverterImpl::SetDateAllowed(bool val) {
date_allowed_ = val;
@@ -104,6 +105,10 @@ void V8ValueConverterImpl::SetStripNullFromObjects(bool val) {
strip_null_from_objects_ = val;
}
+void V8ValueConverterImpl::SetStrategy(Strategy* strategy) {
+ strategy_ = strategy;
+}
+
v8::Handle<v8::Value> V8ValueConverterImpl::ToV8Value(
const base::Value* value, v8::Handle<v8::Context> context) const {
v8::Context::Scope context_scope(context);
@@ -296,6 +301,13 @@ base::Value* V8ValueConverterImpl::FromV8Array(
return base::Value::CreateNullValue();
scoped_ptr<v8::Context::Scope> scope;
+
+ if (strategy_) {
+ Value* out = NULL;
+ if (strategy_->FromV8Array(val, &out))
+ return out;
+ }
not at google - send to devlin 2013/08/08 01:02:21 it needs to be after scope is reset() below.
pmarch 2013/08/08 03:20:18 gotcha
+
// If val was created in a different context than our current one, change to
// that context, but change back after val is converted.
if (!val->CreationContext().IsEmpty() &&
@@ -357,7 +369,15 @@ base::Value* V8ValueConverterImpl::FromV8Object(
FromV8ValueState* state) const {
if (!state->UpdateAndCheckUniqueness(val))
return base::Value::CreateNullValue();
+
scoped_ptr<v8::Context::Scope> scope;
+
+ if (strategy_) {
+ Value* out = NULL;
+ if (strategy_->FromV8Object(val, &out))
+ return out;
+ }
not at google - send to devlin 2013/08/08 01:02:21 ditto
pmarch 2013/08/08 03:20:18 Done.
+
// If val was created in a different context than our current one, change to
// that context, but change back after val is converted.
if (!val->CreationContext().IsEmpty() &&

Powered by Google App Engine
This is Rietveld 408576698