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

Side by Side Diff: net/proxy/proxy_resolver_v8.cc

Issue 679113002: Replacing v8::Handle with v8::Local in src/net (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "net/proxy/proxy_resolver_v8.h" 5 #include "net/proxy/proxy_resolver_v8.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cstdio> 8 #include <cstdio>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 }; 126 };
127 127
128 // When creating a v8::String from a C++ string we have two choices: create 128 // When creating a v8::String from a C++ string we have two choices: create
129 // a copy, or create a wrapper that shares the same underlying storage. 129 // a copy, or create a wrapper that shares the same underlying storage.
130 // For small strings it is better to just make a copy, whereas for large 130 // For small strings it is better to just make a copy, whereas for large
131 // strings there are savings by sharing the storage. This number identifies 131 // strings there are savings by sharing the storage. This number identifies
132 // the cutoff length for when to start wrapping rather than creating copies. 132 // the cutoff length for when to start wrapping rather than creating copies.
133 const size_t kMaxStringBytesForCopy = 256; 133 const size_t kMaxStringBytesForCopy = 256;
134 134
135 // Converts a V8 String to a UTF8 std::string. 135 // Converts a V8 String to a UTF8 std::string.
136 std::string V8StringToUTF8(v8::Handle<v8::String> s) { 136 std::string V8StringToUTF8(v8::Local<v8::String> s) {
137 int len = s->Length(); 137 int len = s->Length();
138 std::string result; 138 std::string result;
139 if (len > 0) 139 if (len > 0)
140 s->WriteUtf8(WriteInto(&result, len + 1)); 140 s->WriteUtf8(WriteInto(&result, len + 1));
141 return result; 141 return result;
142 } 142 }
143 143
144 // Converts a V8 String to a UTF16 base::string16. 144 // Converts a V8 String to a UTF16 base::string16.
145 base::string16 V8StringToUTF16(v8::Handle<v8::String> s) { 145 base::string16 V8StringToUTF16(v8::Local<v8::String> s) {
146 int len = s->Length(); 146 int len = s->Length();
147 base::string16 result; 147 base::string16 result;
148 // Note that the reinterpret cast is because on Windows string16 is an alias 148 // Note that the reinterpret cast is because on Windows string16 is an alias
149 // to wstring, and hence has character type wchar_t not uint16_t. 149 // to wstring, and hence has character type wchar_t not uint16_t.
150 if (len > 0) 150 if (len > 0)
151 s->Write(reinterpret_cast<uint16_t*>(WriteInto(&result, len + 1)), 0, len); 151 s->Write(reinterpret_cast<uint16_t*>(WriteInto(&result, len + 1)), 0, len);
152 return result; 152 return result;
153 } 153 }
154 154
155 // Converts an ASCII std::string to a V8 string. 155 // Converts an ASCII std::string to a V8 string.
(...skipping 26 matching lines...) Expand all
182 size_t length = strlen(ascii); 182 size_t length = strlen(ascii);
183 if (length <= kMaxStringBytesForCopy) 183 if (length <= kMaxStringBytesForCopy)
184 return v8::String::NewFromUtf8(isolate, ascii, v8::String::kNormalString, 184 return v8::String::NewFromUtf8(isolate, ascii, v8::String::kNormalString,
185 length); 185 length);
186 return v8::String::NewExternal(isolate, 186 return v8::String::NewExternal(isolate,
187 new V8ExternalASCIILiteral(ascii, length)); 187 new V8ExternalASCIILiteral(ascii, length));
188 } 188 }
189 189
190 // Stringizes a V8 object by calling its toString() method. Returns true 190 // Stringizes a V8 object by calling its toString() method. Returns true
191 // on success. This may fail if the toString() throws an exception. 191 // on success. This may fail if the toString() throws an exception.
192 bool V8ObjectToUTF16String(v8::Handle<v8::Value> object, 192 bool V8ObjectToUTF16String(v8::Local<v8::Value> object,
193 base::string16* utf16_result, 193 base::string16* utf16_result,
194 v8::Isolate* isolate) { 194 v8::Isolate* isolate) {
195 if (object.IsEmpty()) 195 if (object.IsEmpty())
196 return false; 196 return false;
197 197
198 v8::HandleScope scope(isolate); 198 v8::HandleScope scope(isolate);
199 v8::Local<v8::String> str_object = object->ToString(); 199 v8::Local<v8::String> str_object = object->ToString();
200 if (str_object.IsEmpty()) 200 if (str_object.IsEmpty())
201 return false; 201 return false;
202 *utf16_result = V8StringToUTF16(str_object); 202 *utf16_result = V8StringToUTF16(str_object);
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 v8::Local<v8::Context>::New(isolate_, v8_context_); 366 v8::Local<v8::Context>::New(isolate_, v8_context_);
367 v8::Context::Scope function_scope(context); 367 v8::Context::Scope function_scope(context);
368 368
369 v8::Local<v8::Value> function; 369 v8::Local<v8::Value> function;
370 if (!GetFindProxyForURL(&function)) { 370 if (!GetFindProxyForURL(&function)) {
371 js_bindings()->OnError( 371 js_bindings()->OnError(
372 -1, base::ASCIIToUTF16("FindProxyForURL() is undefined.")); 372 -1, base::ASCIIToUTF16("FindProxyForURL() is undefined."));
373 return ERR_PAC_SCRIPT_FAILED; 373 return ERR_PAC_SCRIPT_FAILED;
374 } 374 }
375 375
376 v8::Handle<v8::Value> argv[] = { 376 v8::Local<v8::Value> argv[] = {
377 ASCIIStringToV8String(isolate_, query_url.spec()), 377 ASCIIStringToV8String(isolate_, query_url.spec()),
378 ASCIIStringToV8String(isolate_, query_url.HostNoBrackets()), 378 ASCIIStringToV8String(isolate_, query_url.HostNoBrackets()),
379 }; 379 };
380 380
381 v8::TryCatch try_catch; 381 v8::TryCatch try_catch;
382 v8::Local<v8::Value> ret = v8::Function::Cast(*function)->Call( 382 v8::Local<v8::Value> ret = v8::Function::Cast(*function)->Call(
383 context->Global(), arraysize(argv), argv); 383 context->Global(), arraysize(argv), argv);
384 384
385 if (try_catch.HasCaught()) { 385 if (try_catch.HasCaught()) {
386 HandleError(try_catch.Message()); 386 HandleError(try_catch.Message());
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 bool GetFindProxyForURL(v8::Local<v8::Value>* function) { 505 bool GetFindProxyForURL(v8::Local<v8::Value>* function) {
506 v8::Local<v8::Context> context = 506 v8::Local<v8::Context> context =
507 v8::Local<v8::Context>::New(isolate_, v8_context_); 507 v8::Local<v8::Context>::New(isolate_, v8_context_);
508 *function = 508 *function =
509 context->Global()->Get( 509 context->Global()->Get(
510 ASCIILiteralToV8String(isolate_, "FindProxyForURL")); 510 ASCIILiteralToV8String(isolate_, "FindProxyForURL"));
511 return (*function)->IsFunction(); 511 return (*function)->IsFunction();
512 } 512 }
513 513
514 // Handle an exception thrown by V8. 514 // Handle an exception thrown by V8.
515 void HandleError(v8::Handle<v8::Message> message) { 515 void HandleError(v8::Local<v8::Message> message) {
516 base::string16 error_message; 516 base::string16 error_message;
517 int line_number = -1; 517 int line_number = -1;
518 518
519 if (!message.IsEmpty()) { 519 if (!message.IsEmpty()) {
520 line_number = message->GetLineNumber(); 520 line_number = message->GetLineNumber();
521 V8ObjectToUTF16String(message->Get(), &error_message, isolate_); 521 V8ObjectToUTF16String(message->Get(), &error_message, isolate_);
522 } 522 }
523 523
524 js_bindings()->OnError(line_number, error_message); 524 js_bindings()->OnError(line_number, error_message);
525 } 525 }
526 526
527 // Compiles and runs |script| in the current V8 context. 527 // Compiles and runs |script| in the current V8 context.
528 // Returns OK on success, otherwise an error code. 528 // Returns OK on success, otherwise an error code.
529 int RunScript(v8::Handle<v8::String> script, const char* script_name) { 529 int RunScript(v8::Local<v8::String> script, const char* script_name) {
530 v8::TryCatch try_catch; 530 v8::TryCatch try_catch;
531 531
532 // Compile the script. 532 // Compile the script.
533 v8::ScriptOrigin origin = 533 v8::ScriptOrigin origin =
534 v8::ScriptOrigin(ASCIILiteralToV8String(isolate_, script_name)); 534 v8::ScriptOrigin(ASCIILiteralToV8String(isolate_, script_name));
535 v8::Local<v8::Script> code = v8::Script::Compile(script, &origin); 535 v8::Local<v8::Script> code = v8::Script::Compile(script, &origin);
536 536
537 // Execute. 537 // Execute.
538 if (!code.IsEmpty()) 538 if (!code.IsEmpty())
539 code->Run(); 539 code->Run();
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
797 return 0; 797 return 0;
798 798
799 v8::Locker locked(g_proxy_resolver_isolate_->isolate()); 799 v8::Locker locked(g_proxy_resolver_isolate_->isolate());
800 v8::Isolate::Scope isolate_scope(g_proxy_resolver_isolate_->isolate()); 800 v8::Isolate::Scope isolate_scope(g_proxy_resolver_isolate_->isolate());
801 v8::HeapStatistics heap_statistics; 801 v8::HeapStatistics heap_statistics;
802 g_proxy_resolver_isolate_->isolate()->GetHeapStatistics(&heap_statistics); 802 g_proxy_resolver_isolate_->isolate()->GetHeapStatistics(&heap_statistics);
803 return heap_statistics.used_heap_size(); 803 return heap_statistics.used_heap_size();
804 } 804 }
805 805
806 } // namespace net 806 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698