Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1946)

Side by Side Diff: chrome/renderer/plugin_channel_host.cc

Issue 155174: linux: fix renderer/plugin crash when loading multiple pages with plugins (Closed)
Patch Set: Created 11 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/plugin/plugin_channel.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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/plugin_channel_host.h" 5 #include "chrome/renderer/plugin_channel_host.h"
6 6
7 #include "chrome/common/plugin_messages.h" 7 #include "chrome/common/plugin_messages.h"
8 8
9 #if defined(OS_POSIX)
10 #include "chrome/common/ipc_channel_posix.h"
11 #endif
12
9 // A simple MessageFilter that will ignore all messages and respond to sync 13 // A simple MessageFilter that will ignore all messages and respond to sync
10 // messages with an error when is_listening_ is false. 14 // messages with an error when is_listening_ is false.
11 class IsListeningFilter : public IPC::ChannelProxy::MessageFilter { 15 class IsListeningFilter : public IPC::ChannelProxy::MessageFilter {
12 public: 16 public:
13 IsListeningFilter() {} 17 IsListeningFilter() {}
14 18
15 // MessageFilter overrides 19 // MessageFilter overrides
16 virtual void OnFilterRemoved() {} 20 virtual void OnFilterRemoved() {}
17 virtual void OnFilterAdded(IPC::Channel* channel) { channel_ = channel; } 21 virtual void OnFilterAdded(IPC::Channel* channel) { channel_ = channel; }
18 virtual bool OnMessageReceived(const IPC::Message& message); 22 virtual bool OnMessageReceived(const IPC::Message& message);
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 ClassFactory, 73 ClassFactory,
70 ipc_message_loop, 74 ipc_message_loop,
71 true)); 75 true));
72 return result; 76 return result;
73 } 77 }
74 78
75 PluginChannelHost::PluginChannelHost() { 79 PluginChannelHost::PluginChannelHost() {
76 } 80 }
77 81
78 PluginChannelHost::~PluginChannelHost() { 82 PluginChannelHost::~PluginChannelHost() {
83 #if defined(OS_POSIX)
84 IPC::RemoveAndCloseChannelSocket(channel_name());
85 #endif
79 } 86 }
80 87
81 bool PluginChannelHost::Init(MessageLoop* ipc_message_loop, 88 bool PluginChannelHost::Init(MessageLoop* ipc_message_loop,
82 bool create_pipe_now) { 89 bool create_pipe_now) {
83 bool ret = PluginChannelBase::Init(ipc_message_loop, create_pipe_now); 90 bool ret = PluginChannelBase::Init(ipc_message_loop, create_pipe_now);
84 is_listening_filter_ = new IsListeningFilter; 91 is_listening_filter_ = new IsListeningFilter;
85 channel_->AddFilter(is_listening_filter_); 92 channel_->AddFilter(is_listening_filter_);
86 return ret; 93 return ret;
87 } 94 }
88 95
(...skipping 21 matching lines...) Expand all
110 void PluginChannelHost::OnChannelError() { 117 void PluginChannelHost::OnChannelError() {
111 PluginChannelBase::OnChannelError(); 118 PluginChannelBase::OnChannelError();
112 119
113 for (ProxyMap::iterator iter = proxies_.begin(); 120 for (ProxyMap::iterator iter = proxies_.begin();
114 iter != proxies_.end(); iter++) { 121 iter != proxies_.end(); iter++) {
115 iter->second->OnChannelError(); 122 iter->second->OnChannelError();
116 } 123 }
117 124
118 proxies_.clear(); 125 proxies_.clear();
119 } 126 }
OLDNEW
« no previous file with comments | « chrome/plugin/plugin_channel.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698