diff options
author | pliard@chromium.org <pliard@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-20 10:36:57 +0000 |
---|---|---|
committer | pliard@chromium.org <pliard@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-20 10:36:57 +0000 |
commit | 1f172cbb1bfa19f1f2acaf976f59202289f3edc8 (patch) | |
tree | 11a62f371ae31bb9e902d23949f01cc8cb8162d0 /content/browser/browser_main_runner.cc | |
parent | 54af29e301c163acae653eeed248e386712fd712 (diff) | |
download | chromium_src-1f172cbb1bfa19f1f2acaf976f59202289f3edc8.zip chromium_src-1f172cbb1bfa19f1f2acaf976f59202289f3edc8.tar.gz chromium_src-1f172cbb1bfa19f1f2acaf976f59202289f3edc8.tar.bz2 |
Make HostController/DeviceListener deletion fully synchronous.
These classes are responsible for creating Forwarder instances that operate on
their own thread. The Forwarder class used to self-delete independently of its
creator (HostController/DeviceListener) lifecycle. This could have led to
Forwarder instances still operating although HostController/DeviceListener were
deleted.
r229931 recently added support for adb port unmapping once there is no
HostController instance anymore operating for a specific device. This change
assumed (very reasonably) that ~HostController() was fully synchronous which
was unfortunately not the case.
This CL makes the Forwarder instances now explicitly owned by their creator.
This is not as trivial as it sounds since the Forwarder instance creators
(HostController and DeviceListener) live on a thread other than the one
Forwarder instances are created on.
This complexity is encapsulated into the new ForwardersManager class that
creates and manages the lifecycle (e.g. explicit destruction or destruction on
error) of a set of Forwarder instances. This class is used both by
HostController and DeviceListener.
BUG=313809
R=digit@chromium.org
Review URL: https://codereview.chromium.org/60033002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@245895 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/browser_main_runner.cc')
0 files changed, 0 insertions, 0 deletions