| OLD | NEW |
| 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 "content/renderer/render_thread_impl.h" | 5 #include "content/renderer/render_thread_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 #include <map> | 9 #include <map> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 158 #include "third_party/WebKit/public/web/WebView.h" | 158 #include "third_party/WebKit/public/web/WebView.h" |
| 159 #include "third_party/icu/source/i18n/unicode/timezone.h" | 159 #include "third_party/icu/source/i18n/unicode/timezone.h" |
| 160 #include "third_party/skia/include/core/SkGraphics.h" | 160 #include "third_party/skia/include/core/SkGraphics.h" |
| 161 #include "ui/base/layout.h" | 161 #include "ui/base/layout.h" |
| 162 #include "ui/base/ui_base_switches.h" | 162 #include "ui/base/ui_base_switches.h" |
| 163 #include "v8/include/v8.h" | 163 #include "v8/include/v8.h" |
| 164 | 164 |
| 165 #if defined(OS_ANDROID) | 165 #if defined(OS_ANDROID) |
| 166 #include <cpu-features.h> | 166 #include <cpu-features.h> |
| 167 #include "content/renderer/android/synchronous_compositor_external_begin_frame_s
ource.h" | 167 #include "content/renderer/android/synchronous_compositor_external_begin_frame_s
ource.h" |
| 168 #include "content/renderer/android/synchronous_compositor_factory.h" | |
| 169 #include "content/renderer/android/synchronous_compositor_filter.h" | 168 #include "content/renderer/android/synchronous_compositor_filter.h" |
| 170 #include "content/renderer/media/android/renderer_demuxer_android.h" | 169 #include "content/renderer/media/android/renderer_demuxer_android.h" |
| 171 #include "content/renderer/media/android/stream_texture_factory_impl.h" | 170 #include "content/renderer/media/android/stream_texture_factory_impl.h" |
| 172 #include "media/base/android/media_codec_util.h" | 171 #include "media/base/android/media_codec_util.h" |
| 173 #endif | 172 #endif |
| 174 | 173 |
| 175 #if defined(OS_MACOSX) | 174 #if defined(OS_MACOSX) |
| 176 #include "base/mac/mac_util.h" | 175 #include "base/mac/mac_util.h" |
| 177 #include "content/renderer/theme_helper_mac.h" | 176 #include "content/renderer/theme_helper_mac.h" |
| 178 #include "content/renderer/webscrollbarbehavior_impl_mac.h" | 177 #include "content/renderer/webscrollbarbehavior_impl_mac.h" |
| (...skipping 963 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1142 void RenderThreadImpl::RemoveObserver(RenderThreadObserver* observer) { | 1141 void RenderThreadImpl::RemoveObserver(RenderThreadObserver* observer) { |
| 1143 observers_.RemoveObserver(observer); | 1142 observers_.RemoveObserver(observer); |
| 1144 } | 1143 } |
| 1145 | 1144 |
| 1146 void RenderThreadImpl::SetResourceDispatcherDelegate( | 1145 void RenderThreadImpl::SetResourceDispatcherDelegate( |
| 1147 ResourceDispatcherDelegate* delegate) { | 1146 ResourceDispatcherDelegate* delegate) { |
| 1148 resource_dispatcher()->set_delegate(delegate); | 1147 resource_dispatcher()->set_delegate(delegate); |
| 1149 } | 1148 } |
| 1150 | 1149 |
| 1151 void RenderThreadImpl::InitializeCompositorThread() { | 1150 void RenderThreadImpl::InitializeCompositorThread() { |
| 1151 base::Thread::Options options; |
| 1152 #if defined(OS_ANDROID) | 1152 #if defined(OS_ANDROID) |
| 1153 SynchronousCompositorFactory* sync_compositor_factory = | 1153 options.priority = base::ThreadPriority::DISPLAY; |
| 1154 SynchronousCompositorFactory::GetInstance(); | |
| 1155 const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess(); | |
| 1156 bool using_ipc_sync_compositing = | |
| 1157 cmd_line->HasSwitch(switches::kIPCSyncCompositing); | |
| 1158 bool sync_input_for_sync_compositing = | |
| 1159 cmd_line->HasSwitch(switches::kSyncInputForSyncCompositor); | |
| 1160 DCHECK(!sync_compositor_factory || !using_ipc_sync_compositing); | |
| 1161 DCHECK(!sync_input_for_sync_compositing || using_ipc_sync_compositing); | |
| 1162 | |
| 1163 if (sync_compositor_factory) { | |
| 1164 compositor_task_runner_ = | |
| 1165 sync_compositor_factory->GetCompositorTaskRunner(); | |
| 1166 } | |
| 1167 #endif | 1154 #endif |
| 1168 if (!compositor_task_runner_.get()) { | 1155 compositor_thread_.reset(new WebThreadForCompositor(options)); |
| 1169 base::Thread::Options options; | 1156 blink_platform_impl_->SetCompositorThread(compositor_thread_.get()); |
| 1170 #if defined(OS_ANDROID) | 1157 compositor_task_runner_ = compositor_thread_->GetTaskRunner(); |
| 1171 options.priority = base::ThreadPriority::DISPLAY; | 1158 compositor_task_runner_->PostTask( |
| 1172 #endif | 1159 FROM_HERE, |
| 1173 compositor_thread_.reset(new WebThreadForCompositor(options)); | 1160 base::Bind(base::IgnoreResult(&ThreadRestrictions::SetIOAllowed), false)); |
| 1174 blink_platform_impl_->SetCompositorThread(compositor_thread_.get()); | |
| 1175 compositor_task_runner_ = compositor_thread_->GetTaskRunner(); | |
| 1176 compositor_task_runner_->PostTask( | |
| 1177 FROM_HERE, | |
| 1178 base::Bind(base::IgnoreResult(&ThreadRestrictions::SetIOAllowed), | |
| 1179 false)); | |
| 1180 } | |
| 1181 | 1161 |
| 1182 InputHandlerManagerClient* input_handler_manager_client = nullptr; | 1162 InputHandlerManagerClient* input_handler_manager_client = nullptr; |
| 1183 SynchronousInputHandlerProxyClient* synchronous_input_handler_proxy_client = | 1163 SynchronousInputHandlerProxyClient* synchronous_input_handler_proxy_client = |
| 1184 nullptr; | 1164 nullptr; |
| 1185 #if defined(OS_ANDROID) | 1165 #if defined(OS_ANDROID) |
| 1186 if (using_ipc_sync_compositing) { | 1166 if (GetContentClient()->UsingSynchronousCompositing()) { |
| 1187 sync_compositor_message_filter_ = | 1167 sync_compositor_message_filter_ = |
| 1188 new SynchronousCompositorFilter(compositor_task_runner_); | 1168 new SynchronousCompositorFilter(compositor_task_runner_); |
| 1189 AddFilter(sync_compositor_message_filter_.get()); | 1169 AddFilter(sync_compositor_message_filter_.get()); |
| 1190 if (sync_input_for_sync_compositing) | 1170 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 1171 switches::kSyncInputForSyncCompositor)) { |
| 1191 input_handler_manager_client = sync_compositor_message_filter_.get(); | 1172 input_handler_manager_client = sync_compositor_message_filter_.get(); |
| 1173 } |
| 1192 synchronous_input_handler_proxy_client = | 1174 synchronous_input_handler_proxy_client = |
| 1193 sync_compositor_message_filter_.get(); | 1175 sync_compositor_message_filter_.get(); |
| 1194 } else if (sync_compositor_factory) { | |
| 1195 input_handler_manager_client = | |
| 1196 sync_compositor_factory->GetInputHandlerManagerClient(); | |
| 1197 synchronous_input_handler_proxy_client = | |
| 1198 sync_compositor_factory->GetSynchronousInputHandlerProxyClient(); | |
| 1199 } | 1176 } |
| 1200 #endif | 1177 #endif |
| 1201 if (!input_handler_manager_client) { | 1178 if (!input_handler_manager_client) { |
| 1202 scoped_refptr<InputEventFilter> compositor_input_event_filter( | 1179 scoped_refptr<InputEventFilter> compositor_input_event_filter( |
| 1203 new InputEventFilter(main_input_callback_.callback(), | 1180 new InputEventFilter(main_input_callback_.callback(), |
| 1204 main_thread_compositor_task_runner_, | 1181 main_thread_compositor_task_runner_, |
| 1205 compositor_task_runner_)); | 1182 compositor_task_runner_)); |
| 1206 input_handler_manager_client = compositor_input_event_filter.get(); | 1183 input_handler_manager_client = compositor_input_event_filter.get(); |
| 1207 input_event_filter_ = compositor_input_event_filter; | 1184 input_event_filter_ = compositor_input_event_filter; |
| 1208 } | 1185 } |
| (...skipping 455 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1664 return renderer_scheduler_.get(); | 1641 return renderer_scheduler_.get(); |
| 1665 } | 1642 } |
| 1666 | 1643 |
| 1667 cc::ContextProvider* RenderThreadImpl::GetSharedMainThreadContextProvider() { | 1644 cc::ContextProvider* RenderThreadImpl::GetSharedMainThreadContextProvider() { |
| 1668 return SharedMainThreadContextProvider().get(); | 1645 return SharedMainThreadContextProvider().get(); |
| 1669 } | 1646 } |
| 1670 | 1647 |
| 1671 std::unique_ptr<cc::BeginFrameSource> | 1648 std::unique_ptr<cc::BeginFrameSource> |
| 1672 RenderThreadImpl::CreateExternalBeginFrameSource(int routing_id) { | 1649 RenderThreadImpl::CreateExternalBeginFrameSource(int routing_id) { |
| 1673 #if defined(OS_ANDROID) | 1650 #if defined(OS_ANDROID) |
| 1674 if (SynchronousCompositorFactory* factory = | 1651 if (sync_compositor_message_filter_) { |
| 1675 SynchronousCompositorFactory::GetInstance()) { | |
| 1676 DCHECK(!sync_compositor_message_filter_); | |
| 1677 return factory->CreateExternalBeginFrameSource(routing_id); | |
| 1678 } else if (sync_compositor_message_filter_) { | |
| 1679 return base::WrapUnique(new SynchronousCompositorExternalBeginFrameSource( | 1652 return base::WrapUnique(new SynchronousCompositorExternalBeginFrameSource( |
| 1680 routing_id, sync_compositor_message_filter_.get())); | 1653 routing_id, sync_compositor_message_filter_.get())); |
| 1681 } | 1654 } |
| 1682 #endif | 1655 #endif |
| 1683 return base::WrapUnique(new CompositorExternalBeginFrameSource( | 1656 return base::WrapUnique(new CompositorExternalBeginFrameSource( |
| 1684 compositor_message_filter_.get(), sync_message_filter(), routing_id)); | 1657 compositor_message_filter_.get(), sync_message_filter(), routing_id)); |
| 1685 } | 1658 } |
| 1686 | 1659 |
| 1687 cc::ImageSerializationProcessor* | 1660 cc::ImageSerializationProcessor* |
| 1688 RenderThreadImpl::GetImageSerializationProcessor() { | 1661 RenderThreadImpl::GetImageSerializationProcessor() { |
| (...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2142 } | 2115 } |
| 2143 | 2116 |
| 2144 void RenderThreadImpl::PendingRenderFrameConnect::OnConnectionError() { | 2117 void RenderThreadImpl::PendingRenderFrameConnect::OnConnectionError() { |
| 2145 size_t erased = | 2118 size_t erased = |
| 2146 RenderThreadImpl::current()->pending_render_frame_connects_.erase( | 2119 RenderThreadImpl::current()->pending_render_frame_connects_.erase( |
| 2147 routing_id_); | 2120 routing_id_); |
| 2148 DCHECK_EQ(1u, erased); | 2121 DCHECK_EQ(1u, erased); |
| 2149 } | 2122 } |
| 2150 | 2123 |
| 2151 } // namespace content | 2124 } // namespace content |
| OLD | NEW |