This rewrites the following containers:
std::list, std::unordered_set, base::flat_set, std::stack, std::queue.
This patch was generated by running
./tools/clang/rewrite_templated_container_fields/rewrite-multiple-platforms.sh
Binary size increase:
The increase is only (~9.5kB) above the per-patch limit (+16kB). This
is not a lot given the size of the rewrite. Increase of around 500kb was
approved for MiraclePtr.
AX-Relnotes: n/a.
Binary-Size: See commit description.
Bug: 325302189
Change-Id: I969ae345ef6d6117d5c1773773be913197ca2e73
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5306923
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Commit-Queue: Ali Hijazi <ahijazi@chromium.org>
Owners-Override: Arthur Sonzogni <arthursonzogni@chromium.org>
Reviewed-by: Arthur Sonzogni <arthursonzogni@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1265100}
Header files that do not contain "RefCounted" and do not contain
scoped_refptr do not need to include base/memory/ref_counted.h. Remove
it and do IWYU to fix the build.
Bug: 242216
Change-Id: Ie70e43b0c926b8ef610419c99f43eea991ac8d81
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4005763
Reviewed-by: Kyle Charbonneau <kylechar@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Owners-Override: Kyle Charbonneau <kylechar@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1067592}
Renames PepperPluginInfo to ContentPluginInfo, in order to reflect that
this struct no longer is used only with PPAPI.
The name ContentPluginInfo was chosen because the name PluginInfo is
overloaded already for 3 different types in Chromium. The name also
emphasizes that this type supports the //content layer specifically.
Most of this change is mechanical, with the following exceptions:
1. Some other names have been changed to drop references to Pepper, such
as renaming ContentClient::AddPepperPlugins() to
ContentClient::AddPlugins(). Note that Pepper-specific functions like
MakePepperPluginInfo() intentionally still mention Pepper.
2. Refactored PluginManager::UpdatePluginListWithNaClModules() to use
range-based "for" loops, instead of iterators.
Bug: 1344644
Change-Id: I9b8596f6a53593ed7c4b7e06a266b57c82b0d9bb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3835746
Reviewed-by: Reilly Grant <reillyg@chromium.org>
Commit-Queue: K. Moon <kmoon@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Reviewed-by: John Abd-El-Malek <jam@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1040827}
This inlines all remaining DISALLOW_* macros in content/. This is done
manually (vim regex + manually finding insertion position).
IWYU cleanup is left as a separate pass that is easier when these macros
go away.
Bug: 1010217
Change-Id: I8b5ea6dd9f8a3f584cf3eef82634017a38b15be8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3193883
Commit-Queue: Peter Boström <pbos@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Auto-Submit: Peter Boström <pbos@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Owners-Override: Lei Zhang <thestig@chromium.org>
Cr-Commit-Position: refs/heads/main@{#936160}
Certificate parsing now doesn't depend on the OS so can happen in child processes. To avoid introducing a dependency on net/ in NaCl, make this private API not be part of NaCl since it was added for Flash. It looks like this can be removed as a result, but I'll leave this as a separate task in bug 1064652 along other Flash-only APIs.
This allows removal of BrowserMessageFilter for non-renderer child processe, since as implemented now they don't work with ChildProcessHostImpl.
Bug: 904556
Change-Id: Ic4ea8871097eb69108e484ab6f8ec6c868aff38a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2808690
Reviewed-by: Bill Budge <bbudge@chromium.org>
Reviewed-by: Nasko Oskov <nasko@chromium.org>
Reviewed-by: David Benjamin <davidben@chromium.org>
Commit-Queue: John Abd-El-Malek <jam@chromium.org>
Cr-Commit-Position: refs/heads/master@{#870202}
This removes all Service Manager dependencies from the Font Service in
favor of direct Mojo interface connection. The browser maintains an
internal API for connecting new pipes to the in-process service
instance.
This requires ChildProcessHostImpl to support the BindHostReceiver()
mojom API for non-renderer child processes, as well as
plumbing it up to UtilityProcessHost and PluginProcessHost. Rather than
generic support through Service Manager with manifest-based filtering,
each process host type explicitly implements its support for binding the
FontService interface when requested by the child process.
This CL also fixes some thread-safety bugs in the existing Font Service
client library code which could cause the client endpoint and/or the
WeakPtrFactory to be destroyed on the wrong sequence. FontServiceThread
has been refactored to make the WeakPtrFactory unnecessary, and the
client endpoint is now always destroyed on the correct sequence.
Finally, this changes font_service_unittests to use an in-process
background service instance rather than using the Service Manager to
spin up a dedicated service executable.
Bug: 977637
Change-Id: I3efdafb06ae2d79e9cb149675e49c29e30d0cad6
Test: for good measure, manually tested PDF rendering
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1756435
Commit-Queue: Ken Rockot <rockot@google.com>
Reviewed-by: Avi Drissman <avi@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Dominik Röttsches <drott@chromium.org>
Cr-Commit-Position: refs/heads/master@{#687694}
Expands the management of plugins to consider origin when assigning
a process. Only passes empty origins at present, so no observable
change expected.
Bug: 809614
Change-Id: I129495ddc94c86dc1c4aa1b3a7942354eabe59d4
Reviewed-on: https://chromium-review.googlesource.com/915182
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Ehsan Karamad <ekaramad@chromium.org>
Reviewed-by: Bill Budge <bbudge@chromium.org>
Reviewed-by: Nasko Oskov <nasko@chromium.org>
Cr-Commit-Position: refs/heads/master@{#540294}
These are replaced with the base versions base::circular_deque and base::queue.
Typedefs were replaced with using statements in changed code, and adjacent
typedefs were also converted.
RTCTimestamps struct in rtc_video_encoder.cc was made copyable and moveable
(it's just an int64 and an int32) to support being put in a circular_deque.
BrowsingDataRemoverImpl::RemovalTask was made move-only (from previously
not movable or copyable).
BUG=757232
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_site_isolation
Change-Id: Ib83f929ae4c014ae0d3766a57e9cb56cba446e2b
Reviewed-on: https://chromium-review.googlesource.com/656066
Commit-Queue: Brett Wilson <brettw@chromium.org>
Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#501169}
The PPAPI plugin client carried around an unused copy of the
ResourceContext associated with the initiator. Remove the dead code.
BUG=None
Change-Id: I6c8a8e2b3d23ee57975cc92cae2dfbbd0c9efdc0
Reviewed-on: https://chromium-review.googlesource.com/587587
Reviewed-by: Jochen Eisinger <jochen@chromium.org>
Commit-Queue: Ryan Sleevi <rsleevi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#490093}
There are 4 subclasses of ChildThreadImpl:
- RenderThreadImpl
- PpapiThread
- GpuChildThread
- UtilityThreadImpl
Before this CL, RenderThreadImpl and PpapiThread would have a
|field_trial_syncer_| field. GpuChildThread would construct a
ChildProcessFieldTrialSyncer via ChromeContentGpuClient::Initialize, but
only if the GPU didn't share the browser process. UtilityThreadImpl did
not have a |field_trial_syncer_| field.
Before this CL, RenderThreadImpl and GpuChildThread would notify the
browser process about trial activations by calling FieldTrialActivated
method of mojom::FieldTrialRecorder. PpapiThread would notify via
PpapiHostMsg_FieldTrialActivated legacy IPC. UtilityThreadImpl wouldn't
do anything.
After this CL, ChildProcessFieldTrialSyncer and
base::FieldTrialList::Observer are encapsulated and hidden by
ChildThreadImpl.
Also - after this CL, the //content -> //components/variations
dependency is sighly more restricted.
Bug: 740726
Change-Id: I2fdf4e16f52a7339476e337f695b44e621d0b295
Reviewed-on: https://chromium-review.googlesource.com/567034
Commit-Queue: Lukasz Anforowicz <lukasza@chromium.org>
Reviewed-by: Nick Carter <nick@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Alexei Svitkine (slow) <asvitkine@chromium.org>
Cr-Commit-Position: refs/heads/master@{#487993}
It looks like this function got cargo-culted around during refactors.
* Remove unused copies for NaCl, utility process and PPAPI
* Inline the one used copy from RenderProcessHostImpl into BrowserMainLoop
No behavior changes.
BUG=none
TEST=bots
Review-Url: https://codereview.chromium.org/2848603003
Cr-Commit-Position: refs/heads/master@{#468015}
This enables the same field trial synchronization mechanism we use for
renderers and GPU process for the PPAPI process. With this CL, crash reports
from PPAPI process will include active field trials and field trials activated
in the PPAPI process will be reported to UMA and crash.
Moves child_process_field_trial_syncer.cc from chrome
to components along the way.
BUG=582602
TEST=In an official Chrome build with crash reporting enabled, verify you have
Variations hashes listed in chrome://version (restart if you don't) and then go
to http://www.adobe.com/software/flash/about/ and load some flash content
before going to chrome://ppapiflashcrash to cause a PPAPI crash. Then, find the
the crash entry that should now appear on chrome://crashes and view it on
http://crash/ via the Server ID and check that the crash report has entries
under Experiments (under Fields).
Review-Url: https://codereview.chromium.org/2514593002
Cr-Commit-Position: refs/heads/master@{#434384}
Rather than have individual BrowserChildProcessHostImpl users
create their own connection, this moves all that junk into BCPHI
and allows its users to configure it with a service name and
instance ID.
Also changes ChildProcessHost to support ChannelMojo connection
via remote interfaces provided by its delegate, and uses this
in conjunction with the BCPHI changes. Eliminates one more use
of kMojoChannelToken.
BUG=623396
R=ben@chromium.org
Committed: https://crrev.com/8efa71b85282fb4df1d3836a20d086d223df714f
Review-Url: https://codereview.chromium.org/2221153003
Cr-Original-Commit-Position: refs/heads/master@{#410937}
Cr-Commit-Position: refs/heads/master@{#413232}
Reason for revert:
ContentBrowserTest.BrowserCrashCallStack/RendererCrashCallStack are failing on
"Linux Tests (dbg)(1)" and "Linux Tests (dbg)(1)(32)" since this CL. Reproduced
locally and bisected to "Establish MojoChildConnection from
BrowserChildProcessHostImpl", also verified that reverting it on master locally
fixes the problem.
When it fails, the tests stall for a long time before failing. Sample from bot:
ContentBrowserTest.RendererCrashCallStack (run #1):
[ RUN ] ContentBrowserTest.RendererCrashCallStack
[11795:11795:0810/064214:8507100974:WARNING:audio_manager.cc(317)] Multiple instances of AudioManager detected
[11795:11795:0810/064214:8507101034:WARNING:audio_manager.cc(278)] Multiple instances of AudioManager detected
Xlib: extension "RANDR" missing on display ":9".
BrowserTestBase signal handler received SIGTERM. Backtrace:
#0 0x7fdba1ca413e base::debug::StackTrace::StackTrace()
#1 0x00000145ffaa content::(anonymous namespace)::DumpStackTraceSignalHandler()
#2 0x7fdb929cf0b0 <unknown>
#3 0x7fdb92d65d2b __libc_read
#4 0x7fdba1db7e42 base::GetAppOutputInternal()
#5 0x7fdba1db7ff6 base::GetAppOutputAndError()
#6 0x000000993436 content::ContentBrowserTest_RendererCrashCallStack_Test::RunTestOnMainThread()
#7 0x00000144f6ae content::ContentBrowserTest::RunTestOnMainThreadLoop()
#8 0x00000145fd24 content::BrowserTestBase::ProxyRunTestOnMainThreadLoop()
#9 0x0000005b969d _ZN4base8internal13FunctorTraitsIMN4mojo13StrongBindingIN6device14BatteryMonitorEEEFvvEvE6InvokeIPS6_JEEEvS8_OT_DpOT0_
#10 0x0000005b95f1 _ZN4base8internal12InvokeHelperILb0EvE8MakeItSoIRKMN4mojo13StrongBindingIN6device14BatteryMonitorEEEFvvEJPS8_EEEvOT_DpOT0_
#11 0x000001461247 _ZN4base8internal7InvokerINS0_9BindStateIMN7content15BrowserTestBaseEFvvEJNS0_17UnretainedWrapperIS4_EEEEEFvvEE7RunImplIRKS6_RKSt5tupleIJS8_EEJLm0EEEEvOT_OT0_NS_13IndexSequenceIJXspT1_EEEE
#12 0x0000014611ac _ZN4base8internal7InvokerINS0_9BindStateIMN7content15BrowserTestBaseEFvvEJNS0_17UnretainedWrapperIS4_EEEEEFvvEE3RunEPNS0_13BindStateBaseE
#13 0x0000005b971e base::Callback<>::Run()
#14 0x0000015920a8 content::ShellBrowserMainParts::PreMainMessageLoopRun()
#15 0x7fdba3457031 content::BrowserMainLoop::PreMainMessageLoopRun()
#16 0x7fdba29ee2bd _ZN4base8internal13FunctorTraitsIMN4mojo10BindingSetIN7content5mojom14ProcessControlEE7ElementEFvvEvE6InvokeIPS8_JEEEvSA_OT_DpOT0_
#17 0x7fdba345f091 _ZN4base8internal12InvokeHelperILb0EiE8MakeItSoIRKMN7content15BrowserMainLoopEFivEJPS5_EEEiOT_DpOT0_
#18 0x7fdba345f037 _ZN4base8internal7InvokerINS0_9BindStateIMN7content15BrowserMainLoopEFivEJNS0_17UnretainedWrapperIS4_EEEEEFivEE7RunImplIRKS6_RKSt5tupleIJS8_EEJLm0EEEEiOT_OT0_NS_13IndexSequenceIJXspT1_EEEE
#19 0x7fdba345ef9c _ZN4base8internal7InvokerINS0_9BindStateIMN7content15BrowserMainLoopEFivEJNS0_17UnretainedWrapperIS4_EEEEEFivEE3RunEPNS0_13BindStateBaseE
#20 0x7fdba29ee36e base::Callback<>::Run()
#21 0x7fdba3ef057b content::StartupTaskRunner::RunAllTasksNow()
#22 0x7fdba3455033 content::BrowserMainLoop::CreateStartupTasks()
#23 0x7fdba346164d content::BrowserMainRunnerImpl::Initialize()
#24 0x000001541fc4 ShellBrowserMain()
#25 0x000001521e46 content::ShellMainDelegate::RunProcess()
#26 0x7fdba5057e3b content::RunNamedProcessTypeMain()
#27 0x7fdba505a172 content::ContentMainRunnerImpl::Run()
#28 0x7fdba5056f42 content::ContentMain()
#29 0x00000145fa46 content::BrowserTestBase::SetUp()
#30 0x00000144f52d content::ContentBrowserTest::SetUp()
#31 0x0000016a05da testing::internal::HandleSehExceptionsInMethodIfSupported<>()
#32 0x000001691b0e testing::internal::HandleExceptionsInMethodIfSupported<>()
#33 0x0000016868a3 testing::Test::Run()
#34 0x000001687098 testing::TestInfo::Run()
#35 0x00000168763a testing::TestCase::Run()
#36 0x00000168c98c testing::internal::UnitTestImpl::RunAllTests()
#37 0x0000016a4d6a testing::internal::HandleSehExceptionsInMethodIfSupported<>()
#38 0x0000016931ee testing::internal::HandleExceptionsInMethodIfSupported<>()
#39 0x00000168c62f testing::UnitTest::Run()
#40 0x0000014d1d11 RUN_ALL_TESTS()
#41 0x0000014d0bc2 base::TestSuite::Run()
#42 0x00000145edcc content::ContentTestLauncherDelegate::RunTestSuite()
#43 0x00000149b712 content::LaunchTests()
#44 0x00000145ec28 main
#45 0x7fdb929ba7ed __libc_start_main
#46 0x0000005612c5 <unknown>
Original issue's description:
> Establish MojoChildConnection from BrowserChildProcessHostImpl
>
> Rather than have individual BrowserChildProcessHostImpl users
> create their own connection, this moves all that junk into BCPHI
> and allows its users to configure it with a service name and
> instance ID.
>
> Also changes ChildProcessHost to support ChannelMojo connection
> via remote interfaces provided by its delegate, and uses this
> in conjunction with the BCPHI changes. Eliminates one more use
> of kMojoChannelToken.
>
> BUG=623396
> R=ben@chromium.org
>
> Committed: https://crrev.com/8efa71b85282fb4df1d3836a20d086d223df714f
> Cr-Commit-Position: refs/heads/master@{#410937}
TBR=ben@chromium.org,rockot@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=623396
Review-Url: https://codereview.chromium.org/2230283003
Cr-Commit-Position: refs/heads/master@{#411039}
Rather than have individual BrowserChildProcessHostImpl users
create their own connection, this moves all that junk into BCPHI
and allows its users to configure it with a service name and
instance ID.
Also changes ChildProcessHost to support ChannelMojo connection
via remote interfaces provided by its delegate, and uses this
in conjunction with the BCPHI changes. Eliminates one more use
of kMojoChannelToken.
BUG=623396
R=ben@chromium.org
Review-Url: https://codereview.chromium.org/2221153003
Cr-Commit-Position: refs/heads/master@{#410937}
To improve component updates of PPAPI plugins, Chrome needs multiple zygotes.
This will allow the PPAPI zygote to be recreated when a plugin is updated.
This CL allows Chrome to maintain a zygote for each process type by having
each SandboxedProcessLauncherDelegate maintain a class which can communicate
with its respective zygote. This CL will be followed up with work to allow
customization of zygotes, which will give Chrome the improve component update
experience.
BUG=569191
Committed: https://crrev.com/3c1e16b490255119b6f70f94d1716645e897b185
Cr-Commit-Position: refs/heads/master@{#370488}
Review URL: https://codereview.chromium.org/1532423003
Cr-Commit-Position: refs/heads/master@{#371042}
Reason for revert:
Revert "Have each SandboxedProcessLauncherDelegate maintain a zygote."
This reverts commit 3c1e16b490.
This broke the Site Isolation FYI bot failure:
https://build.chromium.org/p/chromium.fyi/builders/Site%20Isolation%20Linux/builds/7700
To re-land the CL, that failure needs to be diagnosed and corrected.
Original issue's description:
> Have each SandboxedProcessLauncherDelegate maintain a zygote.
>
> To improve component updates of PPAPI plugins, Chrome needs multiple zygotes.
> This will allow the PPAPI zygote to be recreated when a plugin is updated.
> This CL allows Chrome to maintain a zygote for each process type by having
> each SandboxedProcessLauncherDelegate maintain a class which can communicate
> with its respective zygote. This CL will be followed up with work to allow
> customization of zygotes, which will give Chrome the improve component update
> experience.
>
> BUG=569191
>
> Committed: https://crrev.com/3c1e16b490255119b6f70f94d1716645e897b185
> Cr-Commit-Position: refs/heads/master@{#370488}
TBR=mdempsky@chromium.org,thestig@chromium.org,avi@chromium.org,mseaborn@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=569191
Review URL: https://codereview.chromium.org/1617213002
Cr-Commit-Position: refs/heads/master@{#370771}
To improve component updates of PPAPI plugins, Chrome needs multiple zygotes.
This will allow the PPAPI zygote to be recreated when a plugin is updated.
This CL allows Chrome to maintain a zygote for each process type by having
each SandboxedProcessLauncherDelegate maintain a class which can communicate
with its respective zygote. This CL will be followed up with work to allow
customization of zygotes, which will give Chrome the improve component update
experience.
BUG=569191
Review URL: https://codereview.chromium.org/1532423003
Cr-Commit-Position: refs/heads/master@{#370488}
This patch was automatically generated by applying clang fixit hints
generated by the plugin to the source tree.
BUG=417463
TBR=sky@chromium.org
Review URL: https://codereview.chromium.org/667943003
Cr-Commit-Position: refs/heads/master@{#300469}
This step is a giant search and replace for OVERRIDE and FINAL to
replace them with their lowercase versions.
BUG=417463
Review URL: https://codereview.chromium.org/637183002
Cr-Commit-Position: refs/heads/master@{#298804}
This CL allows pending ResourceHosts to be created in the browser from the renderer. The functionality is currently exposed through the RendererPpapiHost. The creation call is asynchronous - a callback will be called in the renderer with a pending host ID when the host has been created.
BUG=246396
Review URL: https://chromiumcodereview.appspot.com/15947004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@204954 0039d316-1c4b-4281-b951-d872f2087c98
When the browser process launches the plugin, it explicitly tells each side the PID of the other side, and we now use this PID for sharing handles. Previously we'd use the PID from the IPC channel.
Using the PID from the IPC channel creates a race condition because the PID isn't set until the "hello" message from the opposite side is processed, which isn't guaranteed at any particular time.
BUG=168222
Review URL: https://codereview.chromium.org/11722017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@175190 0039d316-1c4b-4281-b951-d872f2087c98
Flash sometimes needs to synchronously know if it can launch the broker, otherwise it will try to launch the broker when it shouldn't, and end up popping an infobar. This adds an IsAllowed function to synchronously test whether the broker is allowed to launch without popping the infobar.
Note that the document URL of the plugin instance is needed in order to check the broker permissions in the browser process. This is only available in the renderer process. In order to avoid an extra hop to the renderer process just to get this URL, it is sent to the browser (with the render view ID) upon initialization of the instance when the instance is registered with the browser process.
BUG=163248
Review URL: https://chromiumcodereview.appspot.com/11316316
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@172104 0039d316-1c4b-4281-b951-d872f2087c98
The refactors PPB_Flash_File_ModuleLocal/FileRef to the new resource model. Calls for both these interfaces are now made directly to the browser. This removes the in-process implementation for these interfaces also (as they are flash-only). Tests are added for PPB_Flash_File_ModuleLocal.
Review URL: https://codereview.chromium.org/11359097
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@171902 0039d316-1c4b-4281-b951-d872f2087c98
> The refactors PPB_Flash_File_ModuleLocal/FileRef to the new resource model. Calls for both these interfaces are now made directly to the browser. This removes the in-process implementation for these interfaces also (as they are flash-only). Tests are added for PPB_Flash_File_ModuleLocal.
>
> Review URL: https://codereview.chromium.org/11359097TBR=raymes@chromium.org
Review URL: https://codereview.chromium.org/11437038
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@171562 0039d316-1c4b-4281-b951-d872f2087c98
The revert is causing browser tests to fail. Reverting the revert.
> Revert 171080
>
> > The refactors PPB_Flash_File_ModuleLocal/FileRef to the new resource model. Calls for both these interfaces are now made directly to the browser. This removes the in-process implementation for these interfaces also (as they are flash-only). Tests are added for PPB_Flash_File_ModuleLocal.
> >
> > Review URL: https://codereview.chromium.org/11359097
>
> TBR=raymes@chromium.org
>
> Review URL: https://codereview.chromium.org/11437038TBR=raymes@chromium.org
Review URL: https://codereview.chromium.org/11450025
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@171408 0039d316-1c4b-4281-b951-d872f2087c98