| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/renderer/pepper/v8_var_converter.h" | 5 #include "content/renderer/pepper/v8_var_converter.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <stack> | 8 #include <stack> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 259 // current node. Each of the current nodes children are examined. If they appear | 259 // current node. Each of the current nodes children are examined. If they appear |
| 260 // in the list of parents it means we have a cycle and we return NULL. | 260 // in the list of parents it means we have a cycle and we return NULL. |
| 261 // Otherwise, if they can have children, we add them to the stack. If the | 261 // Otherwise, if they can have children, we add them to the stack. If the |
| 262 // node at the top of the stack has already been visited, then we pop it off the | 262 // node at the top of the stack has already been visited, then we pop it off the |
| 263 // stack and erase it from the list of parents. | 263 // stack and erase it from the list of parents. |
| 264 // static | 264 // static |
| 265 bool V8VarConverter::ToV8Value(const PP_Var& var, | 265 bool V8VarConverter::ToV8Value(const PP_Var& var, |
| 266 v8::Handle<v8::Context> context, | 266 v8::Handle<v8::Context> context, |
| 267 v8::Handle<v8::Value>* result) { | 267 v8::Handle<v8::Value>* result) { |
| 268 v8::Context::Scope context_scope(context); | 268 v8::Context::Scope context_scope(context); |
| 269 v8::HandleScope handle_scope; | 269 v8::HandleScope handle_scope(context->GetIsolate()); |
| 270 | 270 |
| 271 VarHandleMap visited_ids; | 271 VarHandleMap visited_ids; |
| 272 ParentVarSet parent_ids; | 272 ParentVarSet parent_ids; |
| 273 | 273 |
| 274 std::stack<StackEntry<PP_Var> > stack; | 274 std::stack<StackEntry<PP_Var> > stack; |
| 275 stack.push(StackEntry<PP_Var>(var)); | 275 stack.push(StackEntry<PP_Var>(var)); |
| 276 v8::Handle<v8::Value> root; | 276 v8::Handle<v8::Value> root; |
| 277 bool is_root = true; | 277 bool is_root = true; |
| 278 | 278 |
| 279 while (!stack.empty()) { | 279 while (!stack.empty()) { |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 363 | 363 |
| 364 *result = handle_scope.Close(root); | 364 *result = handle_scope.Close(root); |
| 365 return true; | 365 return true; |
| 366 } | 366 } |
| 367 | 367 |
| 368 void V8VarConverter::FromV8Value( | 368 void V8VarConverter::FromV8Value( |
| 369 v8::Handle<v8::Value> val, | 369 v8::Handle<v8::Value> val, |
| 370 v8::Handle<v8::Context> context, | 370 v8::Handle<v8::Context> context, |
| 371 const base::Callback<void(const ScopedPPVar&, bool)>& callback) { | 371 const base::Callback<void(const ScopedPPVar&, bool)>& callback) { |
| 372 v8::Context::Scope context_scope(context); | 372 v8::Context::Scope context_scope(context); |
| 373 v8::HandleScope handle_scope; | 373 v8::HandleScope handle_scope(context->GetIsolate()); |
| 374 | 374 |
| 375 HandleVarMap visited_handles; | 375 HandleVarMap visited_handles; |
| 376 ParentHandleSet parent_handles; | 376 ParentHandleSet parent_handles; |
| 377 | 377 |
| 378 std::stack<StackEntry<v8::Handle<v8::Value> > > stack; | 378 std::stack<StackEntry<v8::Handle<v8::Value> > > stack; |
| 379 stack.push(StackEntry<v8::Handle<v8::Value> >(val)); | 379 stack.push(StackEntry<v8::Handle<v8::Value> >(val)); |
| 380 ScopedPPVar root; | 380 ScopedPPVar root; |
| 381 bool is_root = true; | 381 bool is_root = true; |
| 382 | 382 |
| 383 while (!stack.empty()) { | 383 while (!stack.empty()) { |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 500 bool success = dict_var->SetWithStringKey( | 500 bool success = dict_var->SetWithStringKey( |
| 501 std::string(*name_utf8, name_utf8.length()), child_var); | 501 std::string(*name_utf8, name_utf8.length()), child_var); |
| 502 DCHECK(success); | 502 DCHECK(success); |
| 503 } | 503 } |
| 504 } | 504 } |
| 505 } | 505 } |
| 506 resource_converter_->Flush(base::Bind(callback, root)); | 506 resource_converter_->Flush(base::Bind(callback, root)); |
| 507 } | 507 } |
| 508 | 508 |
| 509 } // namespace content | 509 } // namespace content |
| OLD | NEW |