| Index: content/renderer/pepper/v8_var_converter.cc
|
| diff --git a/content/renderer/pepper/v8_var_converter.cc b/content/renderer/pepper/v8_var_converter.cc
|
| index bc1a25347aac0c4cdaef8a09a101afe8adb2090c..e0c274459905085bd6c29d903b93f65a55d9e14a 100644
|
| --- a/content/renderer/pepper/v8_var_converter.cc
|
| +++ b/content/renderer/pepper/v8_var_converter.cc
|
| @@ -395,18 +395,19 @@ bool V8VarConverter::ToV8Value(const PP_Var& var,
|
| return true;
|
| }
|
|
|
| -void V8VarConverter::FromV8Value(
|
| +V8VarConverter::VarConversionResult V8VarConverter::FromV8Value(
|
| v8::Handle<v8::Value> val,
|
| v8::Handle<v8::Context> context,
|
| const base::Callback<void(const ScopedPPVar&, bool)>& callback) {
|
| - ScopedPPVar result_var;
|
| - if (FromV8ValueInternal(val, context, &result_var)) {
|
| - resource_converter_->Flush(base::Bind(callback, result_var));
|
| - } else {
|
| - message_loop_proxy_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(callback, result_var, false));
|
| - }
|
| + VarConversionResult result;
|
| + result.success = FromV8ValueInternal(val, context, &result.var);
|
| + if (!result.success)
|
| + resource_converter_->Reset();
|
| + result.completed_synchronously = !resource_converter_->NeedsFlush();
|
| + if (!result.completed_synchronously)
|
| + resource_converter_->Flush(base::Bind(callback, result.var));
|
| +
|
| + return result;
|
| }
|
|
|
| bool V8VarConverter::FromV8ValueInternal(
|
|
|