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 (RenderProcessObserverList::iterator i = observers_.begin(); |
| 336 i != observers_.end(); ++i) { |
| 337 (*i)->OnRenderProcessShutdown(); |
| 338 } |
| 339 |
334 // Wait for all databases to be closed. | 340 // Wait for all databases to be closed. |
335 if (web_database_observer_impl_.get()) | 341 if (web_database_observer_impl_.get()) |
336 web_database_observer_impl_->WaitForAllDatabasesToClose(); | 342 web_database_observer_impl_->WaitForAllDatabasesToClose(); |
337 | 343 |
338 // Shutdown in reverse of the initialization order. | 344 // Shutdown in reverse of the initialization order. |
339 RemoveFilter(db_message_filter_.get()); | 345 RemoveFilter(db_message_filter_.get()); |
340 db_message_filter_ = NULL; | 346 db_message_filter_ = NULL; |
341 RemoveFilter(devtools_agent_filter_.get()); | 347 RemoveFilter(devtools_agent_filter_.get()); |
342 | 348 |
343 // Shutdown the file thread if it's running. | 349 // Shutdown the file thread if it's running. |
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
627 void RenderThread::OnDOMStorageEvent( | 633 void RenderThread::OnDOMStorageEvent( |
628 const DOMStorageMsg_Event_Params& params) { | 634 const DOMStorageMsg_Event_Params& params) { |
629 if (!dom_storage_event_dispatcher_.get()) | 635 if (!dom_storage_event_dispatcher_.get()) |
630 dom_storage_event_dispatcher_.reset(WebStorageEventDispatcher::create()); | 636 dom_storage_event_dispatcher_.reset(WebStorageEventDispatcher::create()); |
631 dom_storage_event_dispatcher_->dispatchStorageEvent(params.key, | 637 dom_storage_event_dispatcher_->dispatchStorageEvent(params.key, |
632 params.old_value, params.new_value, params.origin, params.url, | 638 params.old_value, params.new_value, params.origin, params.url, |
633 params.storage_type == DOM_STORAGE_LOCAL); | 639 params.storage_type == DOM_STORAGE_LOCAL); |
634 } | 640 } |
635 | 641 |
636 bool RenderThread::OnControlMessageReceived(const IPC::Message& msg) { | 642 bool RenderThread::OnControlMessageReceived(const IPC::Message& msg) { |
| 643 for (RenderProcessObserverList::iterator i = observers_.begin(); |
| 644 i != observers_.end(); ++i) { |
| 645 if ((*i)->OnControlMessageReceived(msg)) |
| 646 return true; |
| 647 } |
| 648 |
637 // Some messages are handled by delegates. | 649 // Some messages are handled by delegates. |
638 if (appcache_dispatcher_->OnMessageReceived(msg)) | 650 if (appcache_dispatcher_->OnMessageReceived(msg)) |
639 return true; | 651 return true; |
640 if (indexed_db_dispatcher_->OnMessageReceived(msg)) | 652 if (indexed_db_dispatcher_->OnMessageReceived(msg)) |
641 return true; | 653 return true; |
642 | 654 |
643 bool handled = true; | 655 bool handled = true; |
644 IPC_BEGIN_MESSAGE_MAP(RenderThread, msg) | 656 IPC_BEGIN_MESSAGE_MAP(RenderThread, msg) |
645 IPC_MESSAGE_HANDLER(ViewMsg_VisitedLink_NewTable, OnUpdateVisitedLinks) | 657 IPC_MESSAGE_HANDLER(ViewMsg_VisitedLink_NewTable, OnUpdateVisitedLinks) |
646 IPC_MESSAGE_HANDLER(ViewMsg_VisitedLink_Add, OnAddVisitedLinks) | 658 IPC_MESSAGE_HANDLER(ViewMsg_VisitedLink_Add, OnAddVisitedLinks) |
(...skipping 524 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1171 } | 1183 } |
1172 | 1184 |
1173 return false; | 1185 return false; |
1174 } | 1186 } |
1175 | 1187 |
1176 void RenderThread::RegisterExtension(v8::Extension* extension, | 1188 void RenderThread::RegisterExtension(v8::Extension* extension, |
1177 bool restrict_to_extensions) { | 1189 bool restrict_to_extensions) { |
1178 WebScriptController::registerExtension(extension); | 1190 WebScriptController::registerExtension(extension); |
1179 v8_extensions_[extension->name()] = restrict_to_extensions; | 1191 v8_extensions_[extension->name()] = restrict_to_extensions; |
1180 } | 1192 } |
OLD | NEW |