| OLD | NEW |
| 1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2009 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 // Represents the browser side of the browser <--> renderer communication | 5 // Represents the browser side of the browser <--> renderer communication |
| 6 // channel. There will be one RenderProcessHost per renderer process. | 6 // channel. There will be one RenderProcessHost per renderer process. |
| 7 | 7 |
| 8 #include "chrome/browser/renderer_host/browser_render_process_host.h" | 8 #include "chrome/browser/renderer_host/browser_render_process_host.h" |
| 9 | 9 |
| 10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
| 11 | 11 |
| 12 #include <algorithm> | 12 #include <algorithm> |
| 13 | 13 |
| 14 #include "base/command_line.h" | 14 #include "base/command_line.h" |
| 15 #include "base/linked_ptr.h" | 15 #include "base/linked_ptr.h" |
| 16 #include "base/logging.h" | 16 #include "base/logging.h" |
| 17 #include "base/path_service.h" | 17 #include "base/path_service.h" |
| 18 #include "base/process_util.h" | 18 #include "base/process_util.h" |
| 19 #include "base/rand_util.h" | 19 #include "base/rand_util.h" |
| 20 #include "base/scoped_ptr.h" | 20 #include "base/scoped_ptr.h" |
| 21 #include "base/shared_memory.h" | 21 #include "base/shared_memory.h" |
| 22 #include "base/singleton.h" | 22 #include "base/singleton.h" |
| 23 #include "base/string_util.h" | 23 #include "base/string_util.h" |
| 24 #include "base/thread.h" | 24 #include "base/thread.h" |
| 25 #include "chrome/browser/browser_process.h" | 25 #include "chrome/browser/browser_process.h" |
| 26 #include "chrome/browser/extensions/extension_message_service.h" |
| 26 #include "chrome/browser/extensions/user_script_master.h" | 27 #include "chrome/browser/extensions/user_script_master.h" |
| 27 #include "chrome/browser/history/history.h" | 28 #include "chrome/browser/history/history.h" |
| 28 #include "chrome/browser/plugin_service.h" | 29 #include "chrome/browser/plugin_service.h" |
| 29 #include "chrome/browser/profile.h" | 30 #include "chrome/browser/profile.h" |
| 30 #include "chrome/browser/renderer_host/render_view_host.h" | 31 #include "chrome/browser/renderer_host/render_view_host.h" |
| 31 #include "chrome/browser/renderer_host/render_widget_helper.h" | 32 #include "chrome/browser/renderer_host/render_widget_helper.h" |
| 32 #include "chrome/browser/renderer_host/render_widget_host.h" | 33 #include "chrome/browser/renderer_host/render_widget_host.h" |
| 33 #include "chrome/browser/renderer_host/renderer_security_policy.h" | 34 #include "chrome/browser/renderer_host/renderer_security_policy.h" |
| 34 #include "chrome/browser/renderer_host/resource_message_filter.h" | 35 #include "chrome/browser/renderer_host/resource_message_filter.h" |
| 35 #include "chrome/browser/renderer_host/web_cache_manager.h" | 36 #include "chrome/browser/renderer_host/web_cache_manager.h" |
| (...skipping 545 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 581 void BrowserRenderProcessHost::OnMessageReceived(const IPC::Message& msg) { | 582 void BrowserRenderProcessHost::OnMessageReceived(const IPC::Message& msg) { |
| 582 if (msg.routing_id() == MSG_ROUTING_CONTROL) { | 583 if (msg.routing_id() == MSG_ROUTING_CONTROL) { |
| 583 // dispatch control messages | 584 // dispatch control messages |
| 584 bool msg_is_ok = true; | 585 bool msg_is_ok = true; |
| 585 IPC_BEGIN_MESSAGE_MAP_EX(BrowserRenderProcessHost, msg, msg_is_ok) | 586 IPC_BEGIN_MESSAGE_MAP_EX(BrowserRenderProcessHost, msg, msg_is_ok) |
| 586 IPC_MESSAGE_HANDLER(ViewHostMsg_PageContents, OnPageContents) | 587 IPC_MESSAGE_HANDLER(ViewHostMsg_PageContents, OnPageContents) |
| 587 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdatedCacheStats, | 588 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdatedCacheStats, |
| 588 OnUpdatedCacheStats) | 589 OnUpdatedCacheStats) |
| 589 IPC_MESSAGE_HANDLER(ViewHostMsg_SuddenTerminationChanged, | 590 IPC_MESSAGE_HANDLER(ViewHostMsg_SuddenTerminationChanged, |
| 590 SuddenTerminationChanged); | 591 SuddenTerminationChanged); |
| 592 IPC_MESSAGE_HANDLER(ViewHostMsg_ExtensionAddListener, |
| 593 OnExtensionAddListener) |
| 594 IPC_MESSAGE_HANDLER(ViewHostMsg_ExtensionRemoveListener, |
| 595 OnExtensionRemoveListener) |
| 591 IPC_MESSAGE_UNHANDLED_ERROR() | 596 IPC_MESSAGE_UNHANDLED_ERROR() |
| 592 IPC_END_MESSAGE_MAP_EX() | 597 IPC_END_MESSAGE_MAP_EX() |
| 593 | 598 |
| 594 if (!msg_is_ok) { | 599 if (!msg_is_ok) { |
| 595 // The message had a handler, but its de-serialization failed. | 600 // The message had a handler, but its de-serialization failed. |
| 596 // We consider this a capital crime. Kill the renderer if we have one. | 601 // We consider this a capital crime. Kill the renderer if we have one. |
| 597 ReceivedBadMessage(msg.type()); | 602 ReceivedBadMessage(msg.type()); |
| 598 } | 603 } |
| 599 return; | 604 return; |
| 600 } | 605 } |
| (...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 790 SendUserScriptsUpdate(shared_memory); | 795 SendUserScriptsUpdate(shared_memory); |
| 791 } | 796 } |
| 792 break; | 797 break; |
| 793 } | 798 } |
| 794 default: { | 799 default: { |
| 795 NOTREACHED(); | 800 NOTREACHED(); |
| 796 break; | 801 break; |
| 797 } | 802 } |
| 798 } | 803 } |
| 799 } | 804 } |
| 805 |
| 806 void BrowserRenderProcessHost::OnExtensionAddListener( |
| 807 const std::string& event_name) { |
| 808 URLRequestContext* context = profile()->GetRequestContext(); |
| 809 ExtensionMessageService* ems = ExtensionMessageService::GetInstance(context); |
| 810 ems->AddEventListener(event_name, pid()); |
| 811 } |
| 812 |
| 813 void BrowserRenderProcessHost::OnExtensionRemoveListener( |
| 814 const std::string& event_name) { |
| 815 URLRequestContext* context = profile()->GetRequestContext(); |
| 816 ExtensionMessageService* ems = ExtensionMessageService::GetInstance(context); |
| 817 ems->RemoveEventListener(event_name, pid()); |
| 818 } |
| OLD | NEW |