| 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 #ifndef CONTENT_BROWSER_RENDERER_HOST_RENDER_PROCESS_HOST_IMPL_H_ | 5 #ifndef CONTENT_BROWSER_RENDERER_HOST_RENDER_PROCESS_HOST_IMPL_H_ |
| 6 #define CONTENT_BROWSER_RENDERER_HOST_RENDER_PROCESS_HOST_IMPL_H_ | 6 #define CONTENT_BROWSER_RENDERER_HOST_RENDER_PROCESS_HOST_IMPL_H_ |
| 7 | 7 |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 #include <stdint.h> | 9 #include <stdint.h> |
| 10 | 10 |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 128 int GetID() const override; | 128 int GetID() const override; |
| 129 bool HasConnection() const override; | 129 bool HasConnection() const override; |
| 130 void SetIgnoreInputEvents(bool ignore_input_events) override; | 130 void SetIgnoreInputEvents(bool ignore_input_events) override; |
| 131 bool IgnoreInputEvents() const override; | 131 bool IgnoreInputEvents() const override; |
| 132 void Cleanup() override; | 132 void Cleanup() override; |
| 133 void AddPendingView() override; | 133 void AddPendingView() override; |
| 134 void RemovePendingView() override; | 134 void RemovePendingView() override; |
| 135 void SetSuddenTerminationAllowed(bool enabled) override; | 135 void SetSuddenTerminationAllowed(bool enabled) override; |
| 136 bool SuddenTerminationAllowed() const override; | 136 bool SuddenTerminationAllowed() const override; |
| 137 IPC::ChannelProxy* GetChannel() override; | 137 IPC::ChannelProxy* GetChannel() override; |
| 138 IPC::Sender* GetImmediateSender() override; |
| 139 IPC::Sender* GetIOThreadSender() override; |
| 138 void AddFilter(BrowserMessageFilter* filter) override; | 140 void AddFilter(BrowserMessageFilter* filter) override; |
| 139 bool FastShutdownForPageCount(size_t count) override; | 141 bool FastShutdownForPageCount(size_t count) override; |
| 140 bool FastShutdownStarted() const override; | 142 bool FastShutdownStarted() const override; |
| 141 base::TimeDelta GetChildProcessIdleTime() const override; | 143 base::TimeDelta GetChildProcessIdleTime() const override; |
| 142 void FilterURL(bool empty_allowed, GURL* url) override; | 144 void FilterURL(bool empty_allowed, GURL* url) override; |
| 143 #if defined(ENABLE_WEBRTC) | 145 #if defined(ENABLE_WEBRTC) |
| 144 void EnableAudioDebugRecordings(const base::FilePath& file) override; | 146 void EnableAudioDebugRecordings(const base::FilePath& file) override; |
| 145 void DisableAudioDebugRecordings() override; | 147 void DisableAudioDebugRecordings() override; |
| 146 void EnableEventLogRecordings(const base::FilePath& file) override; | 148 void EnableEventLogRecordings(const base::FilePath& file) override; |
| 147 void DisableEventLogRecordings() override; | 149 void DisableEventLogRecordings() override; |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 284 // True if this object has deleted itself. | 286 // True if this object has deleted itself. |
| 285 bool is_self_deleted_; | 287 bool is_self_deleted_; |
| 286 #endif | 288 #endif |
| 287 | 289 |
| 288 // The count of currently swapped out but pending RenderViews. We have | 290 // The count of currently swapped out but pending RenderViews. We have |
| 289 // started to swap these in, so the renderer process should not exit if | 291 // started to swap these in, so the renderer process should not exit if |
| 290 // this count is non-zero. | 292 // this count is non-zero. |
| 291 int32_t pending_views_; | 293 int32_t pending_views_; |
| 292 | 294 |
| 293 private: | 295 private: |
| 296 class SafeSenderProxy; |
| 297 |
| 298 friend class ChildProcessLauncherBrowserTest_ChildSpawnFail_Test; |
| 299 friend class SafeSenderProxy; |
| 294 friend class VisitRelayingRenderProcessHost; | 300 friend class VisitRelayingRenderProcessHost; |
| 295 friend class ChildProcessLauncherBrowserTest_ChildSpawnFail_Test; | |
| 296 | 301 |
| 297 std::unique_ptr<IPC::ChannelProxy> CreateChannelProxy( | 302 std::unique_ptr<IPC::ChannelProxy> CreateChannelProxy( |
| 298 const std::string& channel_id); | 303 const std::string& channel_id); |
| 299 | 304 |
| 300 // Creates and adds the IO thread message filters. | 305 // Creates and adds the IO thread message filters. |
| 301 void CreateMessageFilters(); | 306 void CreateMessageFilters(); |
| 302 | 307 |
| 308 // Shared implementation for IPC::Senders exposed by this RPH. |
| 309 bool SendImpl(std::unique_ptr<IPC::Message> message, bool send_now); |
| 310 |
| 303 // Registers Mojo services to be exposed to the renderer. | 311 // Registers Mojo services to be exposed to the renderer. |
| 304 void RegisterMojoServices(); | 312 void RegisterMojoServices(); |
| 305 | 313 |
| 306 void CreateStoragePartitionService( | 314 void CreateStoragePartitionService( |
| 307 mojo::InterfaceRequest<mojom::StoragePartitionService> request); | 315 mojo::InterfaceRequest<mojom::StoragePartitionService> request); |
| 308 | 316 |
| 309 // Control message handlers. | 317 // Control message handlers. |
| 310 void OnShutdownRequest(); | 318 void OnShutdownRequest(); |
| 311 void SuddenTerminationChanged(bool enabled); | 319 void SuddenTerminationChanged(bool enabled); |
| 312 void OnUserMetricsRecordAction(const std::string& action); | 320 void OnUserMetricsRecordAction(const std::string& action); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 355 void SendAecDumpFileToRenderer(int id, | 363 void SendAecDumpFileToRenderer(int id, |
| 356 IPC::PlatformFileForTransit file_for_transit); | 364 IPC::PlatformFileForTransit file_for_transit); |
| 357 void SendEventLogFileToRenderer(int id, | 365 void SendEventLogFileToRenderer(int id, |
| 358 IPC::PlatformFileForTransit file_for_transit); | 366 IPC::PlatformFileForTransit file_for_transit); |
| 359 void SendDisableAecDumpToRenderer(); | 367 void SendDisableAecDumpToRenderer(); |
| 360 void SendDisableEventLogToRenderer(); | 368 void SendDisableEventLogToRenderer(); |
| 361 base::FilePath GetAecDumpFilePathWithExtensions(const base::FilePath& file); | 369 base::FilePath GetAecDumpFilePathWithExtensions(const base::FilePath& file); |
| 362 base::FilePath GetEventLogFilePathWithExtensions(const base::FilePath& file); | 370 base::FilePath GetEventLogFilePathWithExtensions(const base::FilePath& file); |
| 363 #endif | 371 #endif |
| 364 | 372 |
| 373 // An IPC::Sender which lives as long as this RPH and provides safe, opaque |
| 374 // access to ChannelProxy SendNow() and SendOnIOThread(). |
| 375 const std::unique_ptr<SafeSenderProxy> safe_sender_; |
| 376 |
| 365 std::unique_ptr<MojoChildConnection> mojo_child_connection_; | 377 std::unique_ptr<MojoChildConnection> mojo_child_connection_; |
| 366 std::unique_ptr<MojoApplicationHost> mojo_application_host_; | 378 std::unique_ptr<MojoApplicationHost> mojo_application_host_; |
| 367 | 379 |
| 368 // The registered IPC listener objects. When this list is empty, we should | 380 // The registered IPC listener objects. When this list is empty, we should |
| 369 // delete ourselves. | 381 // delete ourselves. |
| 370 IDMap<IPC::Listener> listeners_; | 382 IDMap<IPC::Listener> listeners_; |
| 371 | 383 |
| 372 // The count of currently visible widgets. Since the host can be a container | 384 // The count of currently visible widgets. Since the host can be a container |
| 373 // for multiple widgets, it uses this count to determine when it should be | 385 // for multiple widgets, it uses this count to determine when it should be |
| 374 // backgrounded. | 386 // backgrounded. |
| (...skipping 25 matching lines...) Expand all Loading... |
| 400 // Stores the time at which the first call to Init happened. | 412 // Stores the time at which the first call to Init happened. |
| 401 base::TimeTicks init_time_; | 413 base::TimeTicks init_time_; |
| 402 | 414 |
| 403 // Used to launch and terminate the process without blocking the UI thread. | 415 // Used to launch and terminate the process without blocking the UI thread. |
| 404 std::unique_ptr<ChildProcessLauncher> child_process_launcher_; | 416 std::unique_ptr<ChildProcessLauncher> child_process_launcher_; |
| 405 | 417 |
| 406 // Messages we queue while waiting for the process handle. We queue them here | 418 // Messages we queue while waiting for the process handle. We queue them here |
| 407 // instead of in the channel so that we ensure they're sent after init related | 419 // instead of in the channel so that we ensure they're sent after init related |
| 408 // messages that are sent once the process handle is available. This is | 420 // messages that are sent once the process handle is available. This is |
| 409 // because the queued messages may have dependencies on the init messages. | 421 // because the queued messages may have dependencies on the init messages. |
| 410 std::queue<IPC::Message*> queued_messages_; | 422 std::queue<std::unique_ptr<IPC::Message>> queued_messages_; |
| 411 | 423 |
| 412 // The globally-unique identifier for this RPH. | 424 // The globally-unique identifier for this RPH. |
| 413 const int id_; | 425 const int id_; |
| 414 | 426 |
| 415 // A secondary ID used by the Mojo shell to distinguish different incarnations | 427 // A secondary ID used by the Mojo shell to distinguish different incarnations |
| 416 // of the same RPH from each other. Unlike |id_| this is not globally unique, | 428 // of the same RPH from each other. Unlike |id_| this is not globally unique, |
| 417 // but it is guaranteed to change every time Init() is called. | 429 // but it is guaranteed to change every time Init() is called. |
| 418 int instance_id_ = 1; | 430 int instance_id_ = 1; |
| 419 | 431 |
| 420 BrowserContext* browser_context_; | 432 BrowserContext* browser_context_; |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 514 mojo::ScopedMessagePipeHandle in_process_renderer_handle_; | 526 mojo::ScopedMessagePipeHandle in_process_renderer_handle_; |
| 515 | 527 |
| 516 base::WeakPtrFactory<RenderProcessHostImpl> weak_factory_; | 528 base::WeakPtrFactory<RenderProcessHostImpl> weak_factory_; |
| 517 | 529 |
| 518 DISALLOW_COPY_AND_ASSIGN(RenderProcessHostImpl); | 530 DISALLOW_COPY_AND_ASSIGN(RenderProcessHostImpl); |
| 519 }; | 531 }; |
| 520 | 532 |
| 521 } // namespace content | 533 } // namespace content |
| 522 | 534 |
| 523 #endif // CONTENT_BROWSER_RENDERER_HOST_RENDER_PROCESS_HOST_IMPL_H_ | 535 #endif // CONTENT_BROWSER_RENDERER_HOST_RENDER_PROCESS_HOST_IMPL_H_ |
| OLD | NEW |