| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
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
|