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 |