Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "chrome/renderer/render_thread.h" | 5 #include "chrome/renderer/render_thread.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 #include <map> | 9 #include <map> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 60 #include "content/common/resource_dispatcher.h" | 60 #include "content/common/resource_dispatcher.h" |
| 61 #include "content/common/resource_messages.h" | 61 #include "content/common/resource_messages.h" |
| 62 #include "content/common/view_messages.h" | 62 #include "content/common/view_messages.h" |
| 63 #include "content/common/web_database_observer_impl.h" | 63 #include "content/common/web_database_observer_impl.h" |
| 64 #include "content/plugin/npobject_util.h" | 64 #include "content/plugin/npobject_util.h" |
| 65 #include "content/renderer/cookie_message_filter.h" | 65 #include "content/renderer/cookie_message_filter.h" |
| 66 #include "content/renderer/gpu_channel_host.h" | 66 #include "content/renderer/gpu_channel_host.h" |
| 67 #include "content/renderer/gpu_video_service_host.h" | 67 #include "content/renderer/gpu_video_service_host.h" |
| 68 #include "content/renderer/indexed_db_dispatcher.h" | 68 #include "content/renderer/indexed_db_dispatcher.h" |
| 69 #include "content/renderer/plugin_channel_host.h" | 69 #include "content/renderer/plugin_channel_host.h" |
| 70 #include "content/renderer/render_process_observer.h" | |
| 70 #include "content/renderer/render_view.h" | 71 #include "content/renderer/render_view.h" |
| 71 #include "content/renderer/render_view_visitor.h" | 72 #include "content/renderer/render_view_visitor.h" |
| 72 #include "content/renderer/renderer_webidbfactory_impl.h" | 73 #include "content/renderer/renderer_webidbfactory_impl.h" |
| 73 #include "content/renderer/renderer_webkitclient_impl.h" | 74 #include "content/renderer/renderer_webkitclient_impl.h" |
| 74 #include "ipc/ipc_channel_handle.h" | 75 #include "ipc/ipc_channel_handle.h" |
| 75 #include "ipc/ipc_platform_file.h" | 76 #include "ipc/ipc_platform_file.h" |
| 76 #include "net/base/net_errors.h" | 77 #include "net/base/net_errors.h" |
| 77 #include "net/base/net_util.h" | 78 #include "net/base/net_util.h" |
| 78 #include "third_party/sqlite/sqlite3.h" | 79 #include "third_party/sqlite/sqlite3.h" |
| 79 #include "third_party/tcmalloc/chromium/src/google/malloc_extension.h" | 80 #include "third_party/tcmalloc/chromium/src/google/malloc_extension.h" |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 324 | 325 |
| 325 #if defined(OS_POSIX) | 326 #if defined(OS_POSIX) |
| 326 suicide_on_channel_error_filter_ = new SuicideOnChannelErrorFilter; | 327 suicide_on_channel_error_filter_ = new SuicideOnChannelErrorFilter; |
| 327 AddFilter(suicide_on_channel_error_filter_.get()); | 328 AddFilter(suicide_on_channel_error_filter_.get()); |
| 328 #endif | 329 #endif |
| 329 | 330 |
| 330 TRACE_EVENT_END("RenderThread::Init", 0, ""); | 331 TRACE_EVENT_END("RenderThread::Init", 0, ""); |
| 331 } | 332 } |
| 332 | 333 |
| 333 RenderThread::~RenderThread() { | 334 RenderThread::~RenderThread() { |
| 335 FOR_EACH_OBSERVER( | |
| 336 RenderProcessObserver, observers_, OnRenderProcessShutdown()); | |
| 337 | |
| 334 // Wait for all databases to be closed. | 338 // Wait for all databases to be closed. |
| 335 if (web_database_observer_impl_.get()) | 339 if (web_database_observer_impl_.get()) |
| 336 web_database_observer_impl_->WaitForAllDatabasesToClose(); | 340 web_database_observer_impl_->WaitForAllDatabasesToClose(); |
| 337 | 341 |
| 338 // Shutdown in reverse of the initialization order. | 342 // Shutdown in reverse of the initialization order. |
| 339 RemoveFilter(db_message_filter_.get()); | 343 RemoveFilter(db_message_filter_.get()); |
| 340 db_message_filter_ = NULL; | 344 db_message_filter_ = NULL; |
| 341 RemoveFilter(devtools_agent_filter_.get()); | 345 RemoveFilter(devtools_agent_filter_.get()); |
| 342 | 346 |
| 343 // Shutdown the file thread if it's running. | 347 // Shutdown the file thread if it's running. |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 516 } | 520 } |
| 517 | 521 |
| 518 bool RenderThread::IsExtensionProcess() const { | 522 bool RenderThread::IsExtensionProcess() const { |
| 519 return is_extension_process_; | 523 return is_extension_process_; |
| 520 } | 524 } |
| 521 | 525 |
| 522 bool RenderThread::IsIncognitoProcess() const { | 526 bool RenderThread::IsIncognitoProcess() const { |
| 523 return is_incognito_process_; | 527 return is_incognito_process_; |
| 524 } | 528 } |
| 525 | 529 |
| 530 void RenderThread::AddObserver(RenderProcessObserver* observer) { | |
| 531 observers_.AddObserver(observer); | |
| 532 } | |
| 533 | |
| 534 void RenderThread::RemoveObserver(RenderProcessObserver* observer) { | |
| 535 observers_.RemoveObserver(observer); | |
| 536 } | |
| 537 | |
| 526 void RenderThread::DoNotSuspendWebKitSharedTimer() { | 538 void RenderThread::DoNotSuspendWebKitSharedTimer() { |
| 527 suspend_webkit_shared_timer_ = false; | 539 suspend_webkit_shared_timer_ = false; |
| 528 } | 540 } |
| 529 | 541 |
| 530 void RenderThread::DoNotNotifyWebKitOfModalLoop() { | 542 void RenderThread::DoNotNotifyWebKitOfModalLoop() { |
| 531 notify_webkit_of_modal_loop_ = false; | 543 notify_webkit_of_modal_loop_ = false; |
| 532 } | 544 } |
| 533 | 545 |
| 534 void RenderThread::Resolve(const char* name, size_t length) { | 546 void RenderThread::Resolve(const char* name, size_t length) { |
| 535 return renderer_net_predictor_->Resolve(name, length); | 547 return renderer_net_predictor_->Resolve(name, length); |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 627 void RenderThread::OnDOMStorageEvent( | 639 void RenderThread::OnDOMStorageEvent( |
| 628 const DOMStorageMsg_Event_Params& params) { | 640 const DOMStorageMsg_Event_Params& params) { |
| 629 if (!dom_storage_event_dispatcher_.get()) | 641 if (!dom_storage_event_dispatcher_.get()) |
| 630 dom_storage_event_dispatcher_.reset(WebStorageEventDispatcher::create()); | 642 dom_storage_event_dispatcher_.reset(WebStorageEventDispatcher::create()); |
| 631 dom_storage_event_dispatcher_->dispatchStorageEvent(params.key, | 643 dom_storage_event_dispatcher_->dispatchStorageEvent(params.key, |
| 632 params.old_value, params.new_value, params.origin, params.url, | 644 params.old_value, params.new_value, params.origin, params.url, |
| 633 params.storage_type == DOM_STORAGE_LOCAL); | 645 params.storage_type == DOM_STORAGE_LOCAL); |
| 634 } | 646 } |
| 635 | 647 |
| 636 bool RenderThread::OnControlMessageReceived(const IPC::Message& msg) { | 648 bool RenderThread::OnControlMessageReceived(const IPC::Message& msg) { |
| 649 ObserverListBase<RenderProcessObserver>::Iterator it(observers_); | |
| 650 RenderProcessObserver* observer; | |
| 651 while ((observer = it.GetNext()) != NULL) | |
|
brettw
2011/03/28 16:17:54
Need {} for this while.
| |
| 652 if (observer->OnControlMessageReceived(msg)) | |
| 653 return true; | |
| 654 | |
| 637 // Some messages are handled by delegates. | 655 // Some messages are handled by delegates. |
| 638 if (appcache_dispatcher_->OnMessageReceived(msg)) | 656 if (appcache_dispatcher_->OnMessageReceived(msg)) |
| 639 return true; | 657 return true; |
| 640 if (indexed_db_dispatcher_->OnMessageReceived(msg)) | 658 if (indexed_db_dispatcher_->OnMessageReceived(msg)) |
| 641 return true; | 659 return true; |
| 642 | 660 |
| 643 bool handled = true; | 661 bool handled = true; |
| 644 IPC_BEGIN_MESSAGE_MAP(RenderThread, msg) | 662 IPC_BEGIN_MESSAGE_MAP(RenderThread, msg) |
| 645 IPC_MESSAGE_HANDLER(ViewMsg_VisitedLink_NewTable, OnUpdateVisitedLinks) | 663 IPC_MESSAGE_HANDLER(ViewMsg_VisitedLink_NewTable, OnUpdateVisitedLinks) |
| 646 IPC_MESSAGE_HANDLER(ViewMsg_VisitedLink_Add, OnAddVisitedLinks) | 664 IPC_MESSAGE_HANDLER(ViewMsg_VisitedLink_Add, OnAddVisitedLinks) |
| (...skipping 524 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1171 } | 1189 } |
| 1172 | 1190 |
| 1173 return false; | 1191 return false; |
| 1174 } | 1192 } |
| 1175 | 1193 |
| 1176 void RenderThread::RegisterExtension(v8::Extension* extension, | 1194 void RenderThread::RegisterExtension(v8::Extension* extension, |
| 1177 bool restrict_to_extensions) { | 1195 bool restrict_to_extensions) { |
| 1178 WebScriptController::registerExtension(extension); | 1196 WebScriptController::registerExtension(extension); |
| 1179 v8_extensions_[extension->name()] = restrict_to_extensions; | 1197 v8_extensions_[extension->name()] = restrict_to_extensions; |
| 1180 } | 1198 } |
| OLD | NEW |