| Index: chrome/renderer/extensions/send_request_natives.cc
|
| diff --git a/chrome/renderer/extensions/send_request_natives.cc b/chrome/renderer/extensions/send_request_natives.cc
|
| index a5a8834f77aff0ee742c5d5c8554f4bcbb3379e9..6956b0d8f27d2b61bd3e7fdca41716cdc709d99d 100644
|
| --- a/chrome/renderer/extensions/send_request_natives.cc
|
| +++ b/chrome/renderer/extensions/send_request_natives.cc
|
| @@ -37,14 +37,19 @@ v8::Handle<v8::Value> SendRequestNatives::StartRequest(
|
| int request_id = args[2]->Int32Value();
|
| bool has_callback = args[3]->BooleanValue();
|
| bool for_io_thread = args[4]->BooleanValue();
|
| + bool allow_null_in_objects = args[5]->BooleanValue();
|
|
|
| scoped_ptr<V8ValueConverter> converter(V8ValueConverter::create());
|
|
|
| - // Make "undefined" the same as "null" for optional arguments, but for objects
|
| - // strip nulls (like {foo: null}, and therefore {foo: undefined} as well) to
|
| - // make it easier for extension APIs to check for optional arguments.
|
| - converter->SetUndefinedAllowed(true);
|
| - converter->SetStripNullFromObjects(true);
|
| + if (allow_null_in_objects) {
|
| + converter->SetUndefinedValueBehavior(V8ValueConverter::OMIT);
|
| + } else {
|
| + // Make undefined the same as null for optional arguments, but for objects
|
| + // strip nulls (like {foo: null}, and therefore {foo: undefined} as well) to
|
| + // make it easier for extension APIs to check for optional arguments.
|
| + converter->SetUndefinedValueBehavior(V8ValueConverter::CONVERT_TO_NULL);
|
| + converter->SetStripNullFromObjects(true);
|
| + }
|
|
|
| scoped_ptr<Value> value_args(
|
| converter->FromV8Value(args[1], v8::Context::GetCurrent()));
|
|
|