summaryrefslogtreecommitdiffstats
path: root/ppapi/proxy/proxy_channel.cc
Commit message (Collapse)AuthorAgeFilesLines
* Fix 82176 by transferring ownership of render (client) file descriptor ↵xhwang@chromium.org2011-11-101-2/+2
| | | | | | | | | | | | | | | | | | | | | | instead of duplicating it. The Issue: After broker creates the render-broker channel, the original code will dup() the client file descriptor (fd) and send the duplicate to the render. As a result, there are two copies of the same client fd. One is in the broker process; the other one is sent over the IPC channel and will be owned by the browser and finally by the render. Normally, when connection establishes correctly, the render will send a HelloMessage to the broker, so that the broker is notified and has a chance to call IPC::Channel::ChannelImpl::ProcessIncomingMessages(), which will call CloseClientFileDescriptor() and close its copy of the client fd in the broker. After this, there will be only one copy of the client fd in the render. Whenever the render closes this fd, the broker will get notified with an event. However, if before the connection establishes, something goes wrong (e.g. the render crashed), closing the cliend fd in the browser or render will not work. The broker will keep its server fd and never get notified. The reason is as follows. Since the connection is not established, the HelloMessage never comes. So the broker will never call CloseClientFileDescriptor() to close its copy of the client fd. When there are two copies of the client fd open, closing one of them (e.g. the one owned by the render or browser) won't generate an event in the broker. The broker will keep waiting and never get notified. The Fix: Do not duplicate the client fd. Thus whenever/whereever the client fd is closed, the broker will get notified with an event. BUG=82176 TEST=Tested with ui broker test and normal usage. Also crashed render before connection established and verified that the broker released the render-broker IPC channel. Review URL: http://codereview.chromium.org/8497026 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@109488 0039d316-1c4b-4281-b951-d872f2087c98
* Added logging useful for understanding Pepper broker lifetime.ddorwin@chromium.org2011-10-261-0/+1
| | | | | | | | | | | | Also, added support for VLOG to Pepper OOP plugin and Pepper broker processes by forwarding --vmodule to these processes. BUG=none TEST=Launch a dbg build of Chrome with --vmodule=ppapi_plugin_process_host=1,broker_process_dispatcher=1,ppapi_broker_main=1,broker_dispatcher=1,proxy_channel=1", visit a page that uses the broker, and navigate away from that page. The new log statements should be displayed. Review URL: http://codereview.chromium.org/8347009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@107451 0039d316-1c4b-4281-b951-d872f2087c98
* Convert the pp::proxy namespace to the ppapi::proxy namespace.brettw@chromium.org2011-08-181-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is more consistent with the stuff in shared_impl, and removes a lot of namespace using goop. Add a unified resource tracker shared between the proxy and the impl. This renames the old ResourceObjectBase to Resource and removes the old PluginResource. It moves the resource tracker from the impl to the shared_impl, and makes the proxy use it. Some things become a little less neat because there's no proxy resource base class. In particular GetDispatcher() is now gone. I considered whether to add a helper base class that provides this function, but decided against it and had individual resource classes implement this when their implementation would find it useful. This is because ultimately I want more of this functionality to move into the shared_impl, and it's easier to do that if there are fewer proxy-specific things in the resources. This changes the way that plugins are added to the tracker. Previously they would only be in the tracker if the plugin had a reference to them, although they could be alive if the impl had a scoped_ptr referencing an object. This actually has the bug that if we then give the resource back to the plugin, it wouldn't be refcounted properly and everything would get confused. Now the tracker tracks all live resource objects whether or not the plugin has a ref. This works basically like the var tracker (it would be nice if the var and resource trackers shared more code, but that would further complicate this already overcomplicated patch). The resource tracker takes an extra ref whenever the plugin has one or more, and otherwise just tracks live resources. BUG= TEST= Review URL: http://codereview.chromium.org/7655002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97367 0039d316-1c4b-4281-b951-d872f2087c98
* Make WebPluginInfo more genericcpu@chromium.org2011-08-141-1/+1
| | | | | | | | | | | | | - To account for pepper plugins, it grows a type field - move WebPluginInfo from webkit::npapi to webkit:: and move the files as well. This will allow us to remove hacks to get pepper plugins to load soon BUG=89248 TEST=none Review URL: http://codereview.chromium.org/7648017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@96718 0039d316-1c4b-4281-b951-d872f2087c98
* Hooking MHTML generation to the browser.jcivelli@chromium.org2011-06-141-22/+3
| | | | | | | | | | | | | | This CL adds a class that can be used to generate MHTML for the current page of a tab. It is not yet surfaced in the UI. BUG=None TEST=Run the browser tests. Review URL: http://codereview.chromium.org/7044095 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89047 0039d316-1c4b-4281-b951-d872f2087c98
* Refactored ppapi Dispatcher to share common code between the plugin and ↵ddorwin@chromium.org2011-04-161-0/+88
broker dispatchers. Common code is in DispatcherBase. The base of the dispatcher for plugins remains Dispatcher. The base of the dispatcher for Brokers is BrokerDispatcher. BUG=none TEST=ppapi out-of-process plugins Review URL: http://codereview.chromium.org/6859003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@81883 0039d316-1c4b-4281-b951-d872f2087c98