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

Side by Side Diff: webkit/child/webkitplatformsupport_impl.cc

Issue 185553014: Revert "Revert 254514 "Revert 254507 "Reland "Move WebKitPlatformSupport..."" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « webkit/child/webkitplatformsupport_impl.h ('k') | webkit/child/websocketstreamhandle_bridge.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/child/blink_platform_impl.h" 5 #include "webkit/child/webkitplatformsupport_impl.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 8
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/allocator/allocator_extension.h" 11 #include "base/allocator/allocator_extension.h"
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/files/file_path.h" 13 #include "base/files/file_path.h"
14 #include "base/memory/scoped_ptr.h" 14 #include "base/memory/scoped_ptr.h"
15 #include "base/memory/singleton.h" 15 #include "base/memory/singleton.h"
16 #include "base/message_loop/message_loop.h" 16 #include "base/message_loop/message_loop.h"
17 #include "base/metrics/histogram.h" 17 #include "base/metrics/histogram.h"
18 #include "base/metrics/sparse_histogram.h" 18 #include "base/metrics/sparse_histogram.h"
19 #include "base/metrics/stats_counters.h" 19 #include "base/metrics/stats_counters.h"
20 #include "base/platform_file.h" 20 #include "base/platform_file.h"
21 #include "base/process/process_metrics.h" 21 #include "base/process/process_metrics.h"
22 #include "base/rand_util.h" 22 #include "base/rand_util.h"
23 #include "base/strings/string_number_conversions.h" 23 #include "base/strings/string_number_conversions.h"
24 #include "base/strings/string_util.h" 24 #include "base/strings/string_util.h"
25 #include "base/strings/utf_string_conversions.h" 25 #include "base/strings/utf_string_conversions.h"
26 #include "base/synchronization/lock.h" 26 #include "base/synchronization/lock.h"
27 #include "base/sys_info.h" 27 #include "base/sys_info.h"
28 #include "base/time/time.h" 28 #include "base/time/time.h"
29 #include "content/child/web_socket_stream_handle_impl.h"
30 #include "content/child/web_url_loader_impl.h"
31 #include "grit/blink_resources.h" 29 #include "grit/blink_resources.h"
32 #include "grit/webkit_resources.h" 30 #include "grit/webkit_resources.h"
33 #include "grit/webkit_strings.h" 31 #include "grit/webkit_strings.h"
34 #include "net/base/data_url.h" 32 #include "net/base/data_url.h"
35 #include "net/base/mime_util.h" 33 #include "net/base/mime_util.h"
36 #include "net/base/net_errors.h" 34 #include "net/base/net_errors.h"
37 #include "third_party/WebKit/public/platform/WebData.h" 35 #include "third_party/WebKit/public/platform/WebData.h"
38 #include "third_party/WebKit/public/platform/WebString.h" 36 #include "third_party/WebKit/public/platform/WebString.h"
39 #include "ui/base/layout.h" 37 #include "ui/base/layout.h"
40 #include "webkit/child/webkit_child_helpers.h" 38 #include "webkit/child/webkit_child_helpers.h"
39 #include "webkit/child/websocketstreamhandle_impl.h"
40 #include "webkit/child/weburlloader_impl.h"
41 #include "webkit/common/user_agent/user_agent.h" 41 #include "webkit/common/user_agent/user_agent.h"
42 42
43 #if defined(OS_ANDROID) 43 #if defined(OS_ANDROID)
44 #include "base/android/sys_utils.h" 44 #include "base/android/sys_utils.h"
45 #endif 45 #endif
46 46
47 #if !defined(NO_TCMALLOC) && defined(USE_TCMALLOC) && !defined(OS_WIN) 47 #if !defined(NO_TCMALLOC) && defined(USE_TCMALLOC) && !defined(OS_WIN)
48 #include "third_party/tcmalloc/chromium/src/gperftools/heap-profiler.h" 48 #include "third_party/tcmalloc/chromium/src/gperftools/heap-profiler.h"
49 #endif 49 #endif
50 50
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 99
100 // How long the cached value should remain valid. 100 // How long the cached value should remain valid.
101 base::TimeDelta cache_valid_time_; 101 base::TimeDelta cache_valid_time_;
102 102
103 // The last time the cached value was updated. 103 // The last time the cached value was updated.
104 base::Time last_updated_time_; 104 base::Time last_updated_time_;
105 105
106 base::Lock lock_; 106 base::Lock lock_;
107 }; 107 };
108 108
109 } // namespace 109 } // anonymous namespace
110 110
111 namespace content { 111 namespace webkit_glue {
112 112
113 static int ToMessageID(WebLocalizedString::Name name) { 113 static int ToMessageID(WebLocalizedString::Name name) {
114 switch (name) { 114 switch (name) {
115 case WebLocalizedString::AXAMPMFieldText: 115 case WebLocalizedString::AXAMPMFieldText:
116 return IDS_AX_AM_PM_FIELD_TEXT; 116 return IDS_AX_AM_PM_FIELD_TEXT;
117 case WebLocalizedString::AXButtonActionVerb: 117 case WebLocalizedString::AXButtonActionVerb:
118 return IDS_AX_BUTTON_ACTION_VERB; 118 return IDS_AX_BUTTON_ACTION_VERB;
119 case WebLocalizedString::AXCheckedCheckBoxActionVerb: 119 case WebLocalizedString::AXCheckedCheckBoxActionVerb:
120 return IDS_AX_CHECKED_CHECK_BOX_ACTION_VERB; 120 return IDS_AX_CHECKED_CHECK_BOX_ACTION_VERB;
121 case WebLocalizedString::AXDateTimeFieldEmptyValueText: 121 case WebLocalizedString::AXDateTimeFieldEmptyValueText:
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 // This "default:" line exists to avoid compile warnings about enum 337 // This "default:" line exists to avoid compile warnings about enum
338 // coverage when we add a new symbol to WebLocalizedString.h in WebKit. 338 // coverage when we add a new symbol to WebLocalizedString.h in WebKit.
339 // After a planned WebKit patch is landed, we need to add a case statement 339 // After a planned WebKit patch is landed, we need to add a case statement
340 // for the added symbol here. 340 // for the added symbol here.
341 default: 341 default:
342 break; 342 break;
343 } 343 }
344 return -1; 344 return -1;
345 } 345 }
346 346
347 BlinkPlatformImpl::BlinkPlatformImpl() 347 WebKitPlatformSupportImpl::WebKitPlatformSupportImpl()
348 : main_loop_(base::MessageLoop::current()), 348 : main_loop_(base::MessageLoop::current()),
349 shared_timer_func_(NULL), 349 shared_timer_func_(NULL),
350 shared_timer_fire_time_(0.0), 350 shared_timer_fire_time_(0.0),
351 shared_timer_fire_time_was_set_while_suspended_(false), 351 shared_timer_fire_time_was_set_while_suspended_(false),
352 shared_timer_suspended_(0) {} 352 shared_timer_suspended_(0) {}
353 353
354 BlinkPlatformImpl::~BlinkPlatformImpl() { 354 WebKitPlatformSupportImpl::~WebKitPlatformSupportImpl() {
355 } 355 }
356 356
357 WebURLLoader* BlinkPlatformImpl::createURLLoader() { 357 WebURLLoader* WebKitPlatformSupportImpl::createURLLoader() {
358 return new WebURLLoaderImpl(this); 358 return new WebURLLoaderImpl(this);
359 } 359 }
360 360
361 WebSocketStreamHandle* BlinkPlatformImpl::createSocketStreamHandle() { 361 WebSocketStreamHandle* WebKitPlatformSupportImpl::createSocketStreamHandle() {
362 return new WebSocketStreamHandleImpl(this); 362 return new WebSocketStreamHandleImpl(this);
363 } 363 }
364 364
365 WebString BlinkPlatformImpl::userAgent(const WebURL& url) { 365 WebString WebKitPlatformSupportImpl::userAgent(const WebURL& url) {
366 return WebString::fromUTF8(webkit_glue::GetUserAgent(url)); 366 return WebString::fromUTF8(webkit_glue::GetUserAgent(url));
367 } 367 }
368 368
369 WebData BlinkPlatformImpl::parseDataURL( 369 WebData WebKitPlatformSupportImpl::parseDataURL(
370 const WebURL& url, 370 const WebURL& url,
371 WebString& mimetype_out, 371 WebString& mimetype_out,
372 WebString& charset_out) { 372 WebString& charset_out) {
373 std::string mime_type, char_set, data; 373 std::string mime_type, char_set, data;
374 if (net::DataURL::Parse(url, &mime_type, &char_set, &data) 374 if (net::DataURL::Parse(url, &mime_type, &char_set, &data)
375 && net::IsSupportedMimeType(mime_type)) { 375 && net::IsSupportedMimeType(mime_type)) {
376 mimetype_out = WebString::fromUTF8(mime_type); 376 mimetype_out = WebString::fromUTF8(mime_type);
377 charset_out = WebString::fromUTF8(char_set); 377 charset_out = WebString::fromUTF8(char_set);
378 return data; 378 return data;
379 } 379 }
380 return WebData(); 380 return WebData();
381 } 381 }
382 382
383 WebURLError BlinkPlatformImpl::cancelledError( 383 WebURLError WebKitPlatformSupportImpl::cancelledError(
384 const WebURL& unreachableURL) const { 384 const WebURL& unreachableURL) const {
385 return WebURLLoaderImpl::CreateError(unreachableURL, false, net::ERR_ABORTED); 385 return WebURLLoaderImpl::CreateError(unreachableURL, false, net::ERR_ABORTED);
386 } 386 }
387 387
388 void BlinkPlatformImpl::decrementStatsCounter(const char* name) { 388 void WebKitPlatformSupportImpl::decrementStatsCounter(const char* name) {
389 base::StatsCounter(name).Decrement(); 389 base::StatsCounter(name).Decrement();
390 } 390 }
391 391
392 void BlinkPlatformImpl::incrementStatsCounter(const char* name) { 392 void WebKitPlatformSupportImpl::incrementStatsCounter(const char* name) {
393 base::StatsCounter(name).Increment(); 393 base::StatsCounter(name).Increment();
394 } 394 }
395 395
396 void BlinkPlatformImpl::histogramCustomCounts( 396 void WebKitPlatformSupportImpl::histogramCustomCounts(
397 const char* name, int sample, int min, int max, int bucket_count) { 397 const char* name, int sample, int min, int max, int bucket_count) {
398 // Copied from histogram macro, but without the static variable caching 398 // Copied from histogram macro, but without the static variable caching
399 // the histogram because name is dynamic. 399 // the histogram because name is dynamic.
400 base::HistogramBase* counter = 400 base::HistogramBase* counter =
401 base::Histogram::FactoryGet(name, min, max, bucket_count, 401 base::Histogram::FactoryGet(name, min, max, bucket_count,
402 base::HistogramBase::kUmaTargetedHistogramFlag); 402 base::HistogramBase::kUmaTargetedHistogramFlag);
403 DCHECK_EQ(name, counter->histogram_name()); 403 DCHECK_EQ(name, counter->histogram_name());
404 counter->Add(sample); 404 counter->Add(sample);
405 } 405 }
406 406
407 void BlinkPlatformImpl::histogramEnumeration( 407 void WebKitPlatformSupportImpl::histogramEnumeration(
408 const char* name, int sample, int boundary_value) { 408 const char* name, int sample, int boundary_value) {
409 // Copied from histogram macro, but without the static variable caching 409 // Copied from histogram macro, but without the static variable caching
410 // the histogram because name is dynamic. 410 // the histogram because name is dynamic.
411 base::HistogramBase* counter = 411 base::HistogramBase* counter =
412 base::LinearHistogram::FactoryGet(name, 1, boundary_value, 412 base::LinearHistogram::FactoryGet(name, 1, boundary_value,
413 boundary_value + 1, base::HistogramBase::kUmaTargetedHistogramFlag); 413 boundary_value + 1, base::HistogramBase::kUmaTargetedHistogramFlag);
414 DCHECK_EQ(name, counter->histogram_name()); 414 DCHECK_EQ(name, counter->histogram_name());
415 counter->Add(sample); 415 counter->Add(sample);
416 } 416 }
417 417
418 void BlinkPlatformImpl::histogramSparse(const char* name, int sample) { 418 void WebKitPlatformSupportImpl::histogramSparse(const char* name, int sample) {
419 // For sparse histograms, we can use the macro, as it does not incorporate a 419 // For sparse histograms, we can use the macro, as it does not incorporate a
420 // static. 420 // static.
421 UMA_HISTOGRAM_SPARSE_SLOWLY(name, sample); 421 UMA_HISTOGRAM_SPARSE_SLOWLY(name, sample);
422 } 422 }
423 423
424 const unsigned char* BlinkPlatformImpl::getTraceCategoryEnabledFlag( 424 const unsigned char* WebKitPlatformSupportImpl::getTraceCategoryEnabledFlag(
425 const char* category_group) { 425 const char* category_group) {
426 return TRACE_EVENT_API_GET_CATEGORY_GROUP_ENABLED(category_group); 426 return TRACE_EVENT_API_GET_CATEGORY_GROUP_ENABLED(category_group);
427 } 427 }
428 428
429 long* BlinkPlatformImpl::getTraceSamplingState( 429 long* WebKitPlatformSupportImpl::getTraceSamplingState(
430 const unsigned thread_bucket) { 430 const unsigned thread_bucket) {
431 switch (thread_bucket) { 431 switch (thread_bucket) {
432 case 0: 432 case 0:
433 return reinterpret_cast<long*>(&TRACE_EVENT_API_THREAD_BUCKET(0)); 433 return reinterpret_cast<long*>(&TRACE_EVENT_API_THREAD_BUCKET(0));
434 case 1: 434 case 1:
435 return reinterpret_cast<long*>(&TRACE_EVENT_API_THREAD_BUCKET(1)); 435 return reinterpret_cast<long*>(&TRACE_EVENT_API_THREAD_BUCKET(1));
436 case 2: 436 case 2:
437 return reinterpret_cast<long*>(&TRACE_EVENT_API_THREAD_BUCKET(2)); 437 return reinterpret_cast<long*>(&TRACE_EVENT_API_THREAD_BUCKET(2));
438 default: 438 default:
439 NOTREACHED() << "Unknown thread bucket type."; 439 NOTREACHED() << "Unknown thread bucket type.";
440 } 440 }
441 return NULL; 441 return NULL;
442 } 442 }
443 443
444 COMPILE_ASSERT( 444 COMPILE_ASSERT(
445 sizeof(blink::Platform::TraceEventHandle) == 445 sizeof(blink::Platform::TraceEventHandle) ==
446 sizeof(base::debug::TraceEventHandle), 446 sizeof(base::debug::TraceEventHandle),
447 TraceEventHandle_types_must_be_same_size); 447 TraceEventHandle_types_must_be_same_size);
448 448
449 blink::Platform::TraceEventHandle BlinkPlatformImpl::addTraceEvent( 449 blink::Platform::TraceEventHandle WebKitPlatformSupportImpl::addTraceEvent(
450 char phase, 450 char phase,
451 const unsigned char* category_group_enabled, 451 const unsigned char* category_group_enabled,
452 const char* name, 452 const char* name,
453 unsigned long long id, 453 unsigned long long id,
454 int num_args, 454 int num_args,
455 const char** arg_names, 455 const char** arg_names,
456 const unsigned char* arg_types, 456 const unsigned char* arg_types,
457 const unsigned long long* arg_values, 457 const unsigned long long* arg_values,
458 unsigned char flags) { 458 unsigned char flags) {
459 base::debug::TraceEventHandle handle = TRACE_EVENT_API_ADD_TRACE_EVENT( 459 base::debug::TraceEventHandle handle = TRACE_EVENT_API_ADD_TRACE_EVENT(
460 phase, category_group_enabled, name, id, 460 phase, category_group_enabled, name, id,
461 num_args, arg_names, arg_types, arg_values, NULL, flags); 461 num_args, arg_names, arg_types, arg_values, NULL, flags);
462 blink::Platform::TraceEventHandle result; 462 blink::Platform::TraceEventHandle result;
463 memcpy(&result, &handle, sizeof(result)); 463 memcpy(&result, &handle, sizeof(result));
464 return result; 464 return result;
465 } 465 }
466 466
467 void BlinkPlatformImpl::updateTraceEventDuration( 467 void WebKitPlatformSupportImpl::updateTraceEventDuration(
468 const unsigned char* category_group_enabled, 468 const unsigned char* category_group_enabled,
469 const char* name, 469 const char* name,
470 TraceEventHandle handle) { 470 TraceEventHandle handle) {
471 base::debug::TraceEventHandle traceEventHandle; 471 base::debug::TraceEventHandle traceEventHandle;
472 memcpy(&traceEventHandle, &handle, sizeof(handle)); 472 memcpy(&traceEventHandle, &handle, sizeof(handle));
473 TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION( 473 TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(
474 category_group_enabled, name, traceEventHandle); 474 category_group_enabled, name, traceEventHandle);
475 } 475 }
476 476
477 namespace { 477 namespace {
478 478
479 WebData loadAudioSpatializationResource(BlinkPlatformImpl* platform, 479 WebData loadAudioSpatializationResource(WebKitPlatformSupportImpl* platform,
480 const char* name) { 480 const char* name) {
481 #ifdef IDR_AUDIO_SPATIALIZATION_COMPOSITE 481 #ifdef IDR_AUDIO_SPATIALIZATION_COMPOSITE
482 if (!strcmp(name, "Composite")) { 482 if (!strcmp(name, "Composite")) {
483 base::StringPiece resource = 483 base::StringPiece resource =
484 platform->GetDataResource(IDR_AUDIO_SPATIALIZATION_COMPOSITE, 484 platform->GetDataResource(IDR_AUDIO_SPATIALIZATION_COMPOSITE,
485 ui::SCALE_FACTOR_NONE); 485 ui::SCALE_FACTOR_NONE);
486 return WebData(resource.data(), resource.size()); 486 return WebData(resource.data(), resource.size());
487 } 487 }
488 #endif 488 #endif
489 489
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
641 { "visaCC", IDR_AUTOFILL_CC_VISA, ui::SCALE_FACTOR_100P }, 641 { "visaCC", IDR_AUTOFILL_CC_VISA, ui::SCALE_FACTOR_100P },
642 { "generatePassword", IDR_PASSWORD_GENERATION_ICON, ui::SCALE_FACTOR_100P }, 642 { "generatePassword", IDR_PASSWORD_GENERATION_ICON, ui::SCALE_FACTOR_100P },
643 { "generatePasswordHover", 643 { "generatePasswordHover",
644 IDR_PASSWORD_GENERATION_ICON_HOVER, ui::SCALE_FACTOR_100P }, 644 IDR_PASSWORD_GENERATION_ICON_HOVER, ui::SCALE_FACTOR_100P },
645 { "syntheticTouchCursor", 645 { "syntheticTouchCursor",
646 IDR_SYNTHETIC_TOUCH_CURSOR, ui::SCALE_FACTOR_100P }, 646 IDR_SYNTHETIC_TOUCH_CURSOR, ui::SCALE_FACTOR_100P },
647 }; 647 };
648 648
649 } // namespace 649 } // namespace
650 650
651 WebData BlinkPlatformImpl::loadResource(const char* name) { 651 WebData WebKitPlatformSupportImpl::loadResource(const char* name) {
652 // Some clients will call into this method with an empty |name| when they have 652 // Some clients will call into this method with an empty |name| when they have
653 // optional resources. For example, the PopupMenuChromium code can have icons 653 // optional resources. For example, the PopupMenuChromium code can have icons
654 // for some Autofill items but not for others. 654 // for some Autofill items but not for others.
655 if (!strlen(name)) 655 if (!strlen(name))
656 return WebData(); 656 return WebData();
657 657
658 // Check the name prefix to see if it's an audio resource. 658 // Check the name prefix to see if it's an audio resource.
659 if (StartsWithASCII(name, "IRC_Composite", true) || 659 if (StartsWithASCII(name, "IRC_Composite", true) ||
660 StartsWithASCII(name, "Composite", true)) 660 StartsWithASCII(name, "Composite", true))
661 return loadAudioSpatializationResource(this, name); 661 return loadAudioSpatializationResource(this, name);
662 662
663 // TODO(flackr): We should use a better than linear search here, a trie would 663 // TODO(flackr): We should use a better than linear search here, a trie would
664 // be ideal. 664 // be ideal.
665 for (size_t i = 0; i < arraysize(kDataResources); ++i) { 665 for (size_t i = 0; i < arraysize(kDataResources); ++i) {
666 if (!strcmp(name, kDataResources[i].name)) { 666 if (!strcmp(name, kDataResources[i].name)) {
667 base::StringPiece resource = 667 base::StringPiece resource =
668 GetDataResource(kDataResources[i].id, 668 GetDataResource(kDataResources[i].id,
669 kDataResources[i].scale_factor); 669 kDataResources[i].scale_factor);
670 return WebData(resource.data(), resource.size()); 670 return WebData(resource.data(), resource.size());
671 } 671 }
672 } 672 }
673 673
674 NOTREACHED() << "Unknown image resource " << name; 674 NOTREACHED() << "Unknown image resource " << name;
675 return WebData(); 675 return WebData();
676 } 676 }
677 677
678 WebString BlinkPlatformImpl::queryLocalizedString( 678 WebString WebKitPlatformSupportImpl::queryLocalizedString(
679 WebLocalizedString::Name name) { 679 WebLocalizedString::Name name) {
680 int message_id = ToMessageID(name); 680 int message_id = ToMessageID(name);
681 if (message_id < 0) 681 if (message_id < 0)
682 return WebString(); 682 return WebString();
683 return GetLocalizedString(message_id); 683 return GetLocalizedString(message_id);
684 } 684 }
685 685
686 WebString BlinkPlatformImpl::queryLocalizedString( 686 WebString WebKitPlatformSupportImpl::queryLocalizedString(
687 WebLocalizedString::Name name, int numeric_value) { 687 WebLocalizedString::Name name, int numeric_value) {
688 return queryLocalizedString(name, base::IntToString16(numeric_value)); 688 return queryLocalizedString(name, base::IntToString16(numeric_value));
689 } 689 }
690 690
691 WebString BlinkPlatformImpl::queryLocalizedString( 691 WebString WebKitPlatformSupportImpl::queryLocalizedString(
692 WebLocalizedString::Name name, const WebString& value) { 692 WebLocalizedString::Name name, const WebString& value) {
693 int message_id = ToMessageID(name); 693 int message_id = ToMessageID(name);
694 if (message_id < 0) 694 if (message_id < 0)
695 return WebString(); 695 return WebString();
696 return ReplaceStringPlaceholders(GetLocalizedString(message_id), value, NULL); 696 return ReplaceStringPlaceholders(GetLocalizedString(message_id), value, NULL);
697 } 697 }
698 698
699 WebString BlinkPlatformImpl::queryLocalizedString( 699 WebString WebKitPlatformSupportImpl::queryLocalizedString(
700 WebLocalizedString::Name name, 700 WebLocalizedString::Name name,
701 const WebString& value1, 701 const WebString& value1,
702 const WebString& value2) { 702 const WebString& value2) {
703 int message_id = ToMessageID(name); 703 int message_id = ToMessageID(name);
704 if (message_id < 0) 704 if (message_id < 0)
705 return WebString(); 705 return WebString();
706 std::vector<base::string16> values; 706 std::vector<base::string16> values;
707 values.reserve(2); 707 values.reserve(2);
708 values.push_back(value1); 708 values.push_back(value1);
709 values.push_back(value2); 709 values.push_back(value2);
710 return ReplaceStringPlaceholders( 710 return ReplaceStringPlaceholders(
711 GetLocalizedString(message_id), values, NULL); 711 GetLocalizedString(message_id), values, NULL);
712 } 712 }
713 713
714 double BlinkPlatformImpl::currentTime() { 714 double WebKitPlatformSupportImpl::currentTime() {
715 return base::Time::Now().ToDoubleT(); 715 return base::Time::Now().ToDoubleT();
716 } 716 }
717 717
718 double BlinkPlatformImpl::monotonicallyIncreasingTime() { 718 double WebKitPlatformSupportImpl::monotonicallyIncreasingTime() {
719 return base::TimeTicks::Now().ToInternalValue() / 719 return base::TimeTicks::Now().ToInternalValue() /
720 static_cast<double>(base::Time::kMicrosecondsPerSecond); 720 static_cast<double>(base::Time::kMicrosecondsPerSecond);
721 } 721 }
722 722
723 void BlinkPlatformImpl::cryptographicallyRandomValues( 723 void WebKitPlatformSupportImpl::cryptographicallyRandomValues(
724 unsigned char* buffer, size_t length) { 724 unsigned char* buffer, size_t length) {
725 base::RandBytes(buffer, length); 725 base::RandBytes(buffer, length);
726 } 726 }
727 727
728 void BlinkPlatformImpl::setSharedTimerFiredFunction(void (*func)()) { 728 void WebKitPlatformSupportImpl::setSharedTimerFiredFunction(void (*func)()) {
729 shared_timer_func_ = func; 729 shared_timer_func_ = func;
730 } 730 }
731 731
732 void BlinkPlatformImpl::setSharedTimerFireInterval( 732 void WebKitPlatformSupportImpl::setSharedTimerFireInterval(
733 double interval_seconds) { 733 double interval_seconds) {
734 shared_timer_fire_time_ = interval_seconds + monotonicallyIncreasingTime(); 734 shared_timer_fire_time_ = interval_seconds + monotonicallyIncreasingTime();
735 if (shared_timer_suspended_) { 735 if (shared_timer_suspended_) {
736 shared_timer_fire_time_was_set_while_suspended_ = true; 736 shared_timer_fire_time_was_set_while_suspended_ = true;
737 return; 737 return;
738 } 738 }
739 739
740 // By converting between double and int64 representation, we run the risk 740 // By converting between double and int64 representation, we run the risk
741 // of losing precision due to rounding errors. Performing computations in 741 // of losing precision due to rounding errors. Performing computations in
742 // microseconds reduces this risk somewhat. But there still is the potential 742 // microseconds reduces this risk somewhat. But there still is the potential
743 // of us computing a fire time for the timer that is shorter than what we 743 // of us computing a fire time for the timer that is shorter than what we
744 // need. 744 // need.
745 // As the event loop will check event deadlines prior to actually firing 745 // As the event loop will check event deadlines prior to actually firing
746 // them, there is a risk of needlessly rescheduling events and of 746 // them, there is a risk of needlessly rescheduling events and of
747 // needlessly looping if sleep times are too short even by small amounts. 747 // needlessly looping if sleep times are too short even by small amounts.
748 // This results in measurable performance degradation unless we use ceil() to 748 // This results in measurable performance degradation unless we use ceil() to
749 // always round up the sleep times. 749 // always round up the sleep times.
750 int64 interval = static_cast<int64>( 750 int64 interval = static_cast<int64>(
751 ceil(interval_seconds * base::Time::kMillisecondsPerSecond) 751 ceil(interval_seconds * base::Time::kMillisecondsPerSecond)
752 * base::Time::kMicrosecondsPerMillisecond); 752 * base::Time::kMicrosecondsPerMillisecond);
753 753
754 if (interval < 0) 754 if (interval < 0)
755 interval = 0; 755 interval = 0;
756 756
757 shared_timer_.Stop(); 757 shared_timer_.Stop();
758 shared_timer_.Start(FROM_HERE, base::TimeDelta::FromMicroseconds(interval), 758 shared_timer_.Start(FROM_HERE, base::TimeDelta::FromMicroseconds(interval),
759 this, &BlinkPlatformImpl::DoTimeout); 759 this, &WebKitPlatformSupportImpl::DoTimeout);
760 OnStartSharedTimer(base::TimeDelta::FromMicroseconds(interval)); 760 OnStartSharedTimer(base::TimeDelta::FromMicroseconds(interval));
761 } 761 }
762 762
763 void BlinkPlatformImpl::stopSharedTimer() { 763 void WebKitPlatformSupportImpl::stopSharedTimer() {
764 shared_timer_.Stop(); 764 shared_timer_.Stop();
765 } 765 }
766 766
767 void BlinkPlatformImpl::callOnMainThread( 767 void WebKitPlatformSupportImpl::callOnMainThread(
768 void (*func)(void*), void* context) { 768 void (*func)(void*), void* context) {
769 main_loop_->PostTask(FROM_HERE, base::Bind(func, context)); 769 main_loop_->PostTask(FROM_HERE, base::Bind(func, context));
770 } 770 }
771 771
772 base::PlatformFile BlinkPlatformImpl::databaseOpenFile( 772 base::PlatformFile WebKitPlatformSupportImpl::databaseOpenFile(
773 const blink::WebString& vfs_file_name, int desired_flags) { 773 const blink::WebString& vfs_file_name, int desired_flags) {
774 return base::kInvalidPlatformFileValue; 774 return base::kInvalidPlatformFileValue;
775 } 775 }
776 776
777 int BlinkPlatformImpl::databaseDeleteFile( 777 int WebKitPlatformSupportImpl::databaseDeleteFile(
778 const blink::WebString& vfs_file_name, bool sync_dir) { 778 const blink::WebString& vfs_file_name, bool sync_dir) {
779 return -1; 779 return -1;
780 } 780 }
781 781
782 long BlinkPlatformImpl::databaseGetFileAttributes( 782 long WebKitPlatformSupportImpl::databaseGetFileAttributes(
783 const blink::WebString& vfs_file_name) { 783 const blink::WebString& vfs_file_name) {
784 return 0; 784 return 0;
785 } 785 }
786 786
787 long long BlinkPlatformImpl::databaseGetFileSize( 787 long long WebKitPlatformSupportImpl::databaseGetFileSize(
788 const blink::WebString& vfs_file_name) { 788 const blink::WebString& vfs_file_name) {
789 return 0; 789 return 0;
790 } 790 }
791 791
792 long long BlinkPlatformImpl::databaseGetSpaceAvailableForOrigin( 792 long long WebKitPlatformSupportImpl::databaseGetSpaceAvailableForOrigin(
793 const blink::WebString& origin_identifier) { 793 const blink::WebString& origin_identifier) {
794 return 0; 794 return 0;
795 } 795 }
796 796
797 blink::WebString BlinkPlatformImpl::signedPublicKeyAndChallengeString( 797 blink::WebString WebKitPlatformSupportImpl::signedPublicKeyAndChallengeString(
798 unsigned key_size_index, 798 unsigned key_size_index,
799 const blink::WebString& challenge, 799 const blink::WebString& challenge,
800 const blink::WebURL& url) { 800 const blink::WebURL& url) {
801 return blink::WebString(""); 801 return blink::WebString("");
802 } 802 }
803 803
804 static scoped_ptr<base::ProcessMetrics> CurrentProcessMetrics() { 804 static scoped_ptr<base::ProcessMetrics> CurrentProcessMetrics() {
805 using base::ProcessMetrics; 805 using base::ProcessMetrics;
806 #if defined(OS_MACOSX) 806 #if defined(OS_MACOSX)
807 return scoped_ptr<ProcessMetrics>( 807 return scoped_ptr<ProcessMetrics>(
808 // The default port provider is sufficient to get data for the current 808 // The default port provider is sufficient to get data for the current
809 // process. 809 // process.
810 ProcessMetrics::CreateProcessMetrics(base::GetCurrentProcessHandle(), 810 ProcessMetrics::CreateProcessMetrics(base::GetCurrentProcessHandle(),
811 NULL)); 811 NULL));
812 #else 812 #else
813 return scoped_ptr<ProcessMetrics>( 813 return scoped_ptr<ProcessMetrics>(
814 ProcessMetrics::CreateProcessMetrics(base::GetCurrentProcessHandle())); 814 ProcessMetrics::CreateProcessMetrics(base::GetCurrentProcessHandle()));
815 #endif 815 #endif
816 } 816 }
817 817
818 static size_t getMemoryUsageMB(bool bypass_cache) { 818 static size_t getMemoryUsageMB(bool bypass_cache) {
819 size_t current_mem_usage = 0; 819 size_t current_mem_usage = 0;
820 MemoryUsageCache* mem_usage_cache_singleton = MemoryUsageCache::GetInstance(); 820 MemoryUsageCache* mem_usage_cache_singleton = MemoryUsageCache::GetInstance();
821 if (!bypass_cache && 821 if (!bypass_cache &&
822 mem_usage_cache_singleton->IsCachedValueValid(&current_mem_usage)) 822 mem_usage_cache_singleton->IsCachedValueValid(&current_mem_usage))
823 return current_mem_usage; 823 return current_mem_usage;
824 824
825 current_mem_usage = webkit_glue::MemoryUsageKB() >> 10; 825 current_mem_usage = MemoryUsageKB() >> 10;
826 mem_usage_cache_singleton->SetMemoryValue(current_mem_usage); 826 mem_usage_cache_singleton->SetMemoryValue(current_mem_usage);
827 return current_mem_usage; 827 return current_mem_usage;
828 } 828 }
829 829
830 size_t BlinkPlatformImpl::memoryUsageMB() { 830 size_t WebKitPlatformSupportImpl::memoryUsageMB() {
831 return getMemoryUsageMB(false); 831 return getMemoryUsageMB(false);
832 } 832 }
833 833
834 size_t BlinkPlatformImpl::actualMemoryUsageMB() { 834 size_t WebKitPlatformSupportImpl::actualMemoryUsageMB() {
835 return getMemoryUsageMB(true); 835 return getMemoryUsageMB(true);
836 } 836 }
837 837
838 size_t BlinkPlatformImpl::physicalMemoryMB() { 838 size_t WebKitPlatformSupportImpl::physicalMemoryMB() {
839 return static_cast<size_t>(base::SysInfo::AmountOfPhysicalMemoryMB()); 839 return static_cast<size_t>(base::SysInfo::AmountOfPhysicalMemoryMB());
840 } 840 }
841 841
842 size_t BlinkPlatformImpl::numberOfProcessors() { 842 size_t WebKitPlatformSupportImpl::numberOfProcessors() {
843 return static_cast<size_t>(base::SysInfo::NumberOfProcessors()); 843 return static_cast<size_t>(base::SysInfo::NumberOfProcessors());
844 } 844 }
845 845
846 void BlinkPlatformImpl::startHeapProfiling( 846 void WebKitPlatformSupportImpl::startHeapProfiling(
847 const blink::WebString& prefix) { 847 const blink::WebString& prefix) {
848 // FIXME(morrita): Make this built on windows. 848 // FIXME(morrita): Make this built on windows.
849 #if !defined(NO_TCMALLOC) && defined(USE_TCMALLOC) && !defined(OS_WIN) 849 #if !defined(NO_TCMALLOC) && defined(USE_TCMALLOC) && !defined(OS_WIN)
850 HeapProfilerStart(prefix.utf8().data()); 850 HeapProfilerStart(prefix.utf8().data());
851 #endif 851 #endif
852 } 852 }
853 853
854 void BlinkPlatformImpl::stopHeapProfiling() { 854 void WebKitPlatformSupportImpl::stopHeapProfiling() {
855 #if !defined(NO_TCMALLOC) && defined(USE_TCMALLOC) && !defined(OS_WIN) 855 #if !defined(NO_TCMALLOC) && defined(USE_TCMALLOC) && !defined(OS_WIN)
856 HeapProfilerStop(); 856 HeapProfilerStop();
857 #endif 857 #endif
858 } 858 }
859 859
860 void BlinkPlatformImpl::dumpHeapProfiling( 860 void WebKitPlatformSupportImpl::dumpHeapProfiling(
861 const blink::WebString& reason) { 861 const blink::WebString& reason) {
862 #if !defined(NO_TCMALLOC) && defined(USE_TCMALLOC) && !defined(OS_WIN) 862 #if !defined(NO_TCMALLOC) && defined(USE_TCMALLOC) && !defined(OS_WIN)
863 HeapProfilerDump(reason.utf8().data()); 863 HeapProfilerDump(reason.utf8().data());
864 #endif 864 #endif
865 } 865 }
866 866
867 WebString BlinkPlatformImpl::getHeapProfile() { 867 WebString WebKitPlatformSupportImpl::getHeapProfile() {
868 #if !defined(NO_TCMALLOC) && defined(USE_TCMALLOC) && !defined(OS_WIN) 868 #if !defined(NO_TCMALLOC) && defined(USE_TCMALLOC) && !defined(OS_WIN)
869 char* data = GetHeapProfile(); 869 char* data = GetHeapProfile();
870 WebString result = WebString::fromUTF8(std::string(data)); 870 WebString result = WebString::fromUTF8(std::string(data));
871 free(data); 871 free(data);
872 return result; 872 return result;
873 #else 873 #else
874 return WebString(); 874 return WebString();
875 #endif 875 #endif
876 } 876 }
877 877
878 bool BlinkPlatformImpl::processMemorySizesInBytes( 878 bool WebKitPlatformSupportImpl::processMemorySizesInBytes(
879 size_t* private_bytes, 879 size_t* private_bytes,
880 size_t* shared_bytes) { 880 size_t* shared_bytes) {
881 return CurrentProcessMetrics()->GetMemoryBytes(private_bytes, shared_bytes); 881 return CurrentProcessMetrics()->GetMemoryBytes(private_bytes, shared_bytes);
882 } 882 }
883 883
884 bool BlinkPlatformImpl::memoryAllocatorWasteInBytes(size_t* size) { 884 bool WebKitPlatformSupportImpl::memoryAllocatorWasteInBytes(size_t* size) {
885 return base::allocator::GetAllocatorWasteSize(size); 885 return base::allocator::GetAllocatorWasteSize(size);
886 } 886 }
887 887
888 size_t BlinkPlatformImpl::maxDecodedImageBytes() { 888 size_t WebKitPlatformSupportImpl::maxDecodedImageBytes() {
889 #if defined(OS_ANDROID) 889 #if defined(OS_ANDROID)
890 if (base::android::SysUtils::IsLowEndDevice()) { 890 if (base::android::SysUtils::IsLowEndDevice()) {
891 // Limit image decoded size to 3M pixels on low end devices. 891 // Limit image decoded size to 3M pixels on low end devices.
892 // 4 is maximum number of bytes per pixel. 892 // 4 is maximum number of bytes per pixel.
893 return 3 * 1024 * 1024 * 4; 893 return 3 * 1024 * 1024 * 4;
894 } 894 }
895 // For other devices, limit decoded image size based on the amount of physical 895 // For other devices, limit decoded image size based on the amount of physical
896 // memory. For a device with 2GB physical memory the limit is 16M pixels. 896 // memory. For a device with 2GB physical memory the limit is 16M pixels.
897 return base::SysInfo::AmountOfPhysicalMemory() / 32; 897 return base::SysInfo::AmountOfPhysicalMemory() / 32;
898 #else 898 #else
899 return noDecodedImageByteLimit; 899 return noDecodedImageByteLimit;
900 #endif 900 #endif
901 } 901 }
902 902
903 void BlinkPlatformImpl::SuspendSharedTimer() { 903 void WebKitPlatformSupportImpl::SuspendSharedTimer() {
904 ++shared_timer_suspended_; 904 ++shared_timer_suspended_;
905 } 905 }
906 906
907 void BlinkPlatformImpl::ResumeSharedTimer() { 907 void WebKitPlatformSupportImpl::ResumeSharedTimer() {
908 // The shared timer may have fired or been adjusted while we were suspended. 908 // The shared timer may have fired or been adjusted while we were suspended.
909 if (--shared_timer_suspended_ == 0 && 909 if (--shared_timer_suspended_ == 0 &&
910 (!shared_timer_.IsRunning() || 910 (!shared_timer_.IsRunning() ||
911 shared_timer_fire_time_was_set_while_suspended_)) { 911 shared_timer_fire_time_was_set_while_suspended_)) {
912 shared_timer_fire_time_was_set_while_suspended_ = false; 912 shared_timer_fire_time_was_set_while_suspended_ = false;
913 setSharedTimerFireInterval( 913 setSharedTimerFireInterval(
914 shared_timer_fire_time_ - monotonicallyIncreasingTime()); 914 shared_timer_fire_time_ - monotonicallyIncreasingTime());
915 } 915 }
916 } 916 }
917 917
918 } // namespace content 918 } // namespace webkit_glue
OLDNEW
« no previous file with comments | « webkit/child/webkitplatformsupport_impl.h ('k') | webkit/child/websocketstreamhandle_bridge.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698