OLD | NEW |
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 "content/child/blink_platform_impl.h" |
6 | 6 |
7 #include <math.h> | 7 #include <math.h> |
8 | 8 |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
150 | 150 |
151 // How long the cached value should remain valid. | 151 // How long the cached value should remain valid. |
152 base::TimeDelta cache_valid_time_; | 152 base::TimeDelta cache_valid_time_; |
153 | 153 |
154 // The last time the cached value was updated. | 154 // The last time the cached value was updated. |
155 base::Time last_updated_time_; | 155 base::Time last_updated_time_; |
156 | 156 |
157 base::Lock lock_; | 157 base::Lock lock_; |
158 }; | 158 }; |
159 | 159 |
160 class ConvertableToTraceFormatWrapper | |
161 : public base::trace_event::ConvertableToTraceFormat { | |
162 public: | |
163 // We move a reference pointer from |convertable| to |convertable_|, | |
164 // rather than copying, for thread safety. https://crbug.com/478149 | |
165 explicit ConvertableToTraceFormatWrapper( | |
166 blink::WebConvertableToTraceFormat& convertable) { | |
167 convertable_.moveFrom(convertable); | |
168 } | |
169 void AppendAsTraceFormat(std::string* out) const override { | |
170 *out += convertable_.asTraceFormat().utf8(); | |
171 } | |
172 | |
173 private: | |
174 ~ConvertableToTraceFormatWrapper() override {} | |
175 | |
176 blink::WebConvertableToTraceFormat convertable_; | |
177 }; | |
178 | |
179 } // namespace | 160 } // namespace |
180 | 161 |
181 static int ToMessageID(WebLocalizedString::Name name) { | 162 static int ToMessageID(WebLocalizedString::Name name) { |
182 switch (name) { | 163 switch (name) { |
183 case WebLocalizedString::AXAMPMFieldText: | 164 case WebLocalizedString::AXAMPMFieldText: |
184 return IDS_AX_AM_PM_FIELD_TEXT; | 165 return IDS_AX_AM_PM_FIELD_TEXT; |
185 case WebLocalizedString::AXButtonActionVerb: | 166 case WebLocalizedString::AXButtonActionVerb: |
186 return IDS_AX_BUTTON_ACTION_VERB; | 167 return IDS_AX_BUTTON_ACTION_VERB; |
187 case WebLocalizedString::AXCalendarShowMonthSelector: | 168 case WebLocalizedString::AXCalendarShowMonthSelector: |
188 return IDS_AX_CALENDAR_SHOW_MONTH_SELECTOR; | 169 return IDS_AX_CALENDAR_SHOW_MONTH_SELECTOR; |
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
608 &TRACE_EVENT_API_THREAD_BUCKET(1)); | 589 &TRACE_EVENT_API_THREAD_BUCKET(1)); |
609 case 2: | 590 case 2: |
610 return reinterpret_cast<blink::Platform::TraceEventAPIAtomicWord*>( | 591 return reinterpret_cast<blink::Platform::TraceEventAPIAtomicWord*>( |
611 &TRACE_EVENT_API_THREAD_BUCKET(2)); | 592 &TRACE_EVENT_API_THREAD_BUCKET(2)); |
612 default: | 593 default: |
613 NOTREACHED() << "Unknown thread bucket type."; | 594 NOTREACHED() << "Unknown thread bucket type."; |
614 } | 595 } |
615 return NULL; | 596 return NULL; |
616 } | 597 } |
617 | 598 |
618 static_assert( | |
619 sizeof(blink::Platform::TraceEventHandle) == | |
620 sizeof(base::trace_event::TraceEventHandle), | |
621 "TraceEventHandle types must be same size"); | |
622 | |
623 blink::Platform::TraceEventHandle BlinkPlatformImpl::addTraceEvent( | |
624 char phase, | |
625 const unsigned char* category_group_enabled, | |
626 const char* name, | |
627 unsigned long long id, | |
628 unsigned long long bind_id, | |
629 double timestamp, | |
630 int num_args, | |
631 const char** arg_names, | |
632 const unsigned char* arg_types, | |
633 const unsigned long long* arg_values, | |
634 blink::WebConvertableToTraceFormat* convertable_values, | |
635 unsigned int flags) { | |
636 scoped_refptr<base::trace_event::ConvertableToTraceFormat> | |
637 convertable_wrappers[2]; | |
638 if (convertable_values) { | |
639 size_t size = std::min(static_cast<size_t>(num_args), | |
640 arraysize(convertable_wrappers)); | |
641 for (size_t i = 0; i < size; ++i) { | |
642 if (arg_types[i] == TRACE_VALUE_TYPE_CONVERTABLE) { | |
643 convertable_wrappers[i] = | |
644 new ConvertableToTraceFormatWrapper(convertable_values[i]); | |
645 } | |
646 } | |
647 } | |
648 base::TraceTicks timestamp_tt = | |
649 base::TraceTicks() + base::TimeDelta::FromSecondsD(timestamp); | |
650 base::trace_event::TraceEventHandle handle = | |
651 TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( | |
652 phase, category_group_enabled, name, id, trace_event_internal::kNoId, | |
653 bind_id, base::PlatformThread::CurrentId(), timestamp_tt, num_args, | |
654 arg_names, arg_types, arg_values, convertable_wrappers, flags); | |
655 blink::Platform::TraceEventHandle result; | |
656 memcpy(&result, &handle, sizeof(result)); | |
657 return result; | |
658 } | |
659 | |
660 blink::Platform::TraceEventHandle BlinkPlatformImpl::addTraceEvent( | |
661 char phase, | |
662 const unsigned char* category_group_enabled, | |
663 const char* name, | |
664 unsigned long long id, | |
665 double timestamp, | |
666 int num_args, | |
667 const char** arg_names, | |
668 const unsigned char* arg_types, | |
669 const unsigned long long* arg_values, | |
670 blink::WebConvertableToTraceFormat* convertable_values, | |
671 unsigned char flags) { | |
672 scoped_refptr<base::trace_event::ConvertableToTraceFormat> | |
673 convertable_wrappers[2]; | |
674 if (convertable_values) { | |
675 size_t size = std::min(static_cast<size_t>(num_args), | |
676 arraysize(convertable_wrappers)); | |
677 for (size_t i = 0; i < size; ++i) { | |
678 if (arg_types[i] == TRACE_VALUE_TYPE_CONVERTABLE) { | |
679 convertable_wrappers[i] = | |
680 new ConvertableToTraceFormatWrapper(convertable_values[i]); | |
681 } | |
682 } | |
683 } | |
684 base::TraceTicks timestamp_tt = | |
685 base::TraceTicks() + base::TimeDelta::FromSecondsD(timestamp); | |
686 base::trace_event::TraceEventHandle handle = | |
687 TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( | |
688 phase, category_group_enabled, name, id, trace_event_internal::kNoId, | |
689 base::PlatformThread::CurrentId(), timestamp_tt, num_args, arg_names, | |
690 arg_types, arg_values, convertable_wrappers, flags); | |
691 blink::Platform::TraceEventHandle result; | |
692 memcpy(&result, &handle, sizeof(result)); | |
693 return result; | |
694 } | |
695 | |
696 void BlinkPlatformImpl::updateTraceEventDuration( | |
697 const unsigned char* category_group_enabled, | |
698 const char* name, | |
699 TraceEventHandle handle) { | |
700 base::trace_event::TraceEventHandle traceEventHandle; | |
701 memcpy(&traceEventHandle, &handle, sizeof(handle)); | |
702 TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION( | |
703 category_group_enabled, name, traceEventHandle); | |
704 } | |
705 | |
706 void BlinkPlatformImpl::registerMemoryDumpProvider( | 599 void BlinkPlatformImpl::registerMemoryDumpProvider( |
707 blink::WebMemoryDumpProvider* wmdp) { | 600 blink::WebMemoryDumpProvider* wmdp) { |
708 WebMemoryDumpProviderAdapter* wmdp_adapter = | 601 WebMemoryDumpProviderAdapter* wmdp_adapter = |
709 new WebMemoryDumpProviderAdapter(wmdp); | 602 new WebMemoryDumpProviderAdapter(wmdp); |
710 bool did_insert = | 603 bool did_insert = |
711 memory_dump_providers_.add(wmdp, make_scoped_ptr(wmdp_adapter)).second; | 604 memory_dump_providers_.add(wmdp, make_scoped_ptr(wmdp_adapter)).second; |
712 if (!did_insert) | 605 if (!did_insert) |
713 return; | 606 return; |
714 wmdp_adapter->set_is_registered(true); | 607 wmdp_adapter->set_is_registered(true); |
715 base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider( | 608 base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider( |
(...skipping 676 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1392 return WebString::fromUTF8(ui::KeycodeConverter::DomKeyToKeyString( | 1285 return WebString::fromUTF8(ui::KeycodeConverter::DomKeyToKeyString( |
1393 static_cast<ui::DomKey>(dom_key))); | 1286 static_cast<ui::DomKey>(dom_key))); |
1394 } | 1287 } |
1395 | 1288 |
1396 int BlinkPlatformImpl::domKeyEnumFromString(const WebString& key_string) { | 1289 int BlinkPlatformImpl::domKeyEnumFromString(const WebString& key_string) { |
1397 return static_cast<int>( | 1290 return static_cast<int>( |
1398 ui::KeycodeConverter::KeyStringToDomKey(key_string.utf8().data())); | 1291 ui::KeycodeConverter::KeyStringToDomKey(key_string.utf8().data())); |
1399 } | 1292 } |
1400 | 1293 |
1401 } // namespace content | 1294 } // namespace content |
OLD | NEW |