Project: chromium Issues People Development process History Sign in
New issue
Advanced search Search tips
Issue 11746 Move V8 PAC out of process
Starred by 25 users Project Member Reported by eroman@chromium.org, May 11 2009 Back to list
Status: Fixed
Owner: amistry@chromium.org
Closed: Mar 21
Cc: amistry@chromium.org, pam@chromium.org, raymes@chromium.org, eroman@chromium.org, jam...@chromium.org, cevans@chromium.org, scot...@chromium.org, sa...@chromium.org
Components:
OS: All
Pri: 2
Type: Feature


Sign in to add a comment
Move the ProxyResolverV8 execution into a helper process, so V8 is not 
running in the browser process, to mitigate danger of exploiting V8.
 
Labels: -Size-Medium Size-Large Mstone-3.0 DesignDocNeeded
Status: Available
Labels: mstone4
Labels: -mstone-3.0 mstone-4
Labels: -mstone4
Comment 5 Deleted
Comment 6 by bugdro...@gmail.com, Jul 27 2009
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=21631 

------------------------------------------------------------------------
r21631 | ericroman@google.com | 2009-07-26 14:12:20 -0700 (Sun, 26 Jul 2009) | 19 lines
Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/net/resolve_proxy_msg_helper_unittest.cc?r1=21631&r2=21630
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/net.gyp?r1=21631&r2=21630
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/proxy/proxy_resolver.h?r1=21631&r2=21630
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/proxy/proxy_resolver_mac.cc?r1=21631&r2=21630
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/proxy/proxy_resolver_mac.h?r1=21631&r2=21630
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/proxy/proxy_resolver_perftest.cc?r1=21631&r2=21630
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/proxy/proxy_resolver_v8.cc?r1=21631&r2=21630
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/proxy/proxy_resolver_v8.h?r1=21631&r2=21630
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/proxy/proxy_resolver_v8_unittest.cc?r1=21631&r2=21630
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/proxy/proxy_resolver_winhttp.cc?r1=21631&r2=21630
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/proxy/proxy_resolver_winhttp.h?r1=21631&r2=21630
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/proxy/proxy_service.cc?r1=21631&r2=21630
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/proxy/proxy_service.h?r1=21631&r2=21630
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/proxy/proxy_service_unittest.cc?r1=21631&r2=21630
   A http://src.chromium.org/viewvc/chrome/trunk/src/net/proxy/single_threaded_proxy_resolver.cc
   A http://src.chromium.org/viewvc/chrome/trunk/src/net/proxy/single_threaded_proxy_resolver.h
   A http://src.chromium.org/viewvc/chrome/trunk/src/net/proxy/single_threaded_proxy_resolver_unittest.cc

Remove the concept of threading from ProxyService, and move it into the ProxyResolver dependency.

ProxyResolver may now complete requests asynchronously, and is defined to handle multiple requests.

The code from ProxyService that queued requests onto the single PAC thread has moved into SingleThreadedProxyResolver. 

This refactor lays the groundwork for:

(1) http://crbug.com/11746 -- Run PAC proxy resolving out of process.
(Can inject an IPC bridge implementation of ProxyResolver)


(2) http://crbug.com/11079 -- Run PAC proxy resolving on multiple threads.
(Can implement a MultithreadedProxyResolver type class; still complications around v8 threadsafety though).

BUG=http://crbug.com/11746, http://crbug.com/11079
TEST=existing unit-tests.

Review URL: http://codereview.chromium.org/149525
------------------------------------------------------------------------

Comment 7 by bugdro...@gmail.com, Jul 28 2009
The following revision refers to this bug:
    http://src.chromium.org/viewvc/chrome?view=rev&revision=21829 

------------------------------------------------------------------------
r21829 | ericroman@google.com | 2009-07-27 23:29:51 -0700 (Mon, 27 Jul 2009) | 9 lines
Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/proxy/proxy_service_unittest.cc?r1=21829&r2=21828

Clean-up proxy_service_unittest.cc, to remove dependency on SingleThreadedProxyResolver.

This was a TODO generated in <http://codereview.chromium.org/149525>

This simplifies the test code since everything is running on one thread.

BUG=http://crbug.com/11746, http://crbug.com/11079

Review URL: http://codereview.chromium.org/160155
------------------------------------------------------------------------

Comment 8 by eroman@chromium.org, Jul 28 2009
Status: Assigned
Comment 9 by eroman@chromium.org, Jul 31 2009
Design document:

http://sites.google.com/a/chromium.org/dev/developers/design-documents/out-of-process-v8-pac

Discussion:

http://groups.google.com/group/chromium-
dev/browse_thread/thread/511d3706e123a55d/67c0c6b1c5c148ba
Status: Started
Labels: -DesignDocNeeded
Comment 12 by darin@chromium.org, Oct 16 2009
Labels: -mstone-4 Mstone-5 StopPunting
Comment 13 by oritm@chromium.org, Dec 17 2009
Labels: -Area-BrowserBackend Area-Internals
Replacing labels:
   Area-BrowserBackend by Area-Internals

Labels: m5-priority
Comment 15 by wtc@chromium.org, Mar 9 2010
Labels: -Mstone-5 -m5-priority Mstone-6
Status: Assigned
Comment 16 by pam@chromium.org, Apr 20 2010
Labels: -Mstone-6 Mstone-7
punting.
Comment 18 by mal@google.com, Aug 26 2010
Labels: -Mstone-7 -StopPunting Mstone-X HelpWanted
The risk of spraying executable memory pages into the browser process is pretty low, so I'm lowering the urgency of implementing this. I'm making it 'HelpWanted', but this is not a good started bug... this is more along the lines of 'I fixed a lot of bugs and got committer status, and now I'm looking for a beefier project'.

A quicker mitigation would be to fix issue 24468 and make sure there's a very small maximum memory that the V8 context can use.

I still feel like running V8 on potentially untrusted code is a flaw in the overall security model, even if the threats we know about today are small. 


Comment 19 by mal@google.com, Feb 14 2011
Labels: -HelpWanted GoodFirstBug
Labels: -GoodFirstBug bulkmove Hotlist-GoodFirstBug
Move the ProxyResolverV8 execution into a helper process, so V8 is not 
running in the browser process, to mitigate danger of exploiting V8.
Blocking: 69710
Comment 22 by kareng@google.com, Nov 20 2012
Blocking: -chromium:11443 -chromium:69710 chromium:11443 chromium:69710
Labels: -Mstone-X MstoneRemoved
Bugs that have been moved 5 or more times. Removing Mstone label.
Project Member Comment 23 by bugdroid1@chromium.org, Mar 10 2013
Labels: -Area-Internals Cr-Internals
Comment 24 by joth@chromium.org, Mar 26 2013
Blocking: chromium:106839
Comment 25 Deleted
Cc: cpu@chromium.org
Labels: -Hotlist-GoodFirstBug
Status: Available
The proposed design on this bug has bitrotted. For instance extensions can now change the proxy settings and set PAC scripts. Moreover there may be multiple proxy resolvers due to multi-profile.

There is also an outstanding question of where the right place to do the process splitting is. Rather than simply move PAC out of process, should consider moving the entire network stack out of process (and what that would mean).
Cc: jam...@chromium.org
Today, in the split (browser/child) DLL build V8 is pulled into the browser process by the PAC code and takes up about 13% of the total code size of the browser DLL.  Removing it would slim down the DLL a bit and may improve startup, at least for users who don't use PACs.  Do we have an idea of how many of our users use these things?
The OS default on Windows is auto-detect, so there is a substantial number of users that end up using PAC. I don't have precise numbers though, maybe there is a histogram somewhere.
If we can't find a PAC script, we don't technically need the dll, even if we have to check for the script's existence, no?
That's true, if the discovery doesn't find a file to download then V8 would not be used.
Cc: scot...@chromium.org
Comment 32 by cpu@chromium.org, Dec 6 2014
Owner: brucedaw...@chromium.org
Status: Assigned
bug seems is going nowhere, so given BUG 439661 assigning it to bruce.

This bug could be closed (wontfix) or mutated to the #29 comment.

Cc: raymes@chromium.org sa...@chromium.org amistry@chromium.org
In the last few days, some of us have been discussing the v8 proxy resolver and have a half-baked idea on how to split it out. We've been thinking about implementing it as a Mojo service. Specifically:
1. Move the v8 resolver into an in-process Mojo service.
2. When out-of-process Mojo is usable, split it out.

We've been looking over the interface and implementation and it looks like a perfect candidate for Mojo.

This should be orthogonal to the work to split out v8 into a separate dll.
Comment 34 by jam@chromium.org, Jan 12 2015
when is 2 predicted to happen?

Wouldn't switching IPC to mojo be a small effort? i.e. most of the work would be separating PAC into separate code that doesn't depend on being in the browser process. Then it could be mojofied whenever OOP mojo is usable, but we can get the benefits of removing v8 from the browser before then.
DNS would need to be a separate service as well as proxy resolver depends on it.
Also, would have to be careful of races with the resolver - incognito shares the DNS resolver, and would have to make sure on incognito shutdown, no pending resolution leaves a trace.
@jam:
The ability to use Mojo out-of-process kinda already exists. The work will be in making that work well in Chrome, which is where I suspect the majority of the work is. Like you said, switching to Mojo is the easy part. But I think making that switch first gives us a real Mojo service to build out-of-process support for. It'll also make it easy to transision to be out-of-process since we should be able to support both in and out of process in the same binary and make it flag-flippable.

Another thing is that this bug has stalled for a bit. If no-one else is working on making v8 PAC out of process, we'd like to give this approach a shot.
Quick update. We have a prototype of an OOP v8 pac (using a sandboxed utility process) working locally. There are plenty of details to figure out (+design doc to write, security to figure out, etc) before doing this for realz, but I think have proven the concept.
Owner: amistry@chromium.org
Taking over this bug since I now have a concrete plan to implement this. See: https://docs.google.com/a/chromium.org/document/d/1n5hr4KJhZl2A4MicTfmyiHPdiKp7kmUoWXnRBN8SrZE/edit#
Project Member Comment 41 by bugdroid1@chromium.org, Feb 4 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7d4ec1aa24e79406d29e0cafbb531a3fabfe815f

commit 7d4ec1aa24e79406d29e0cafbb531a3fabfe815f
Author: noel <noel@chromium.org>
Date: Wed Feb 04 07:38:11 2015

Revert of Add Mojo interfaces for out-of-process proxy resolver. (patchset #4 id:60001 of https://codereview.chromium.org/900433003/)

Reason for revert:
http://build.chromium.org/p/chromium.linux/builders/Linux%20Tests%20%28dbg%29%281%29/builds/38575
Broke device_unittests device_unittests SerialConnectionTest.Cancel it seems.

Original issue's description:
> Add Mojo interfaces for out-of-process proxy resolver.
>
> See:
> https://docs.google.com/a/chromium.org/document/d/1n5hr4KJhZl2A4MicTfmyiHPdiKp7kmUoWXnRBN8SrZE/edit#
>
> BUG= 11746 
>
> Committed: https://crrev.com/073e42bb7587b90594e5799fb6a4afe08a1e1561
> Cr-Commit-Position: refs/heads/master@{#314509}

TBR=rdsmith@chromium.org,eroman@chromium.org,sammc@chromium.org,amistry@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= 11746 

Review URL: https://codereview.chromium.org/892373006

Cr-Commit-Position: refs/heads/master@{#314519}

[delete] http://crrev.com/9df5f8fdb80c94fd459000f8208cc352680963e8/net/interfaces/BUILD.gn
[delete] http://crrev.com/9df5f8fdb80c94fd459000f8208cc352680963e8/net/interfaces/host_resolver_service.mojom
[delete] http://crrev.com/9df5f8fdb80c94fd459000f8208cc352680963e8/net/interfaces/proxy_resolver_service.mojom
[modify] http://crrev.com/7d4ec1aa24e79406d29e0cafbb531a3fabfe815f/net/net.gyp

Project Member Comment 42 by bugdroid1@chromium.org, Feb 4 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/aa16ad225b47b9734e878bb4887651332fa12a9c

commit aa16ad225b47b9734e878bb4887651332fa12a9c
Author: amistry <amistry@chromium.org>
Date: Wed Feb 04 09:01:47 2015

Revert of Revert of Add Mojo interfaces for out-of-process proxy resolver. (patchset #1 id:1 of https://codereview.chromium.org/892373006/)

Reason for revert:
The code in this change is not linked into any binary.

Test is flaky:
http://test-results.appspot.com/dashboards/flakiness_dashboard.html#testType=device_unittests&tests=SerialConnectionTest.Cancel

The likely cause of the test failure is https://chromium.googlesource.com/chromium/src/+/bc78a2320b50eba4fe397f1f838a82ad30b16cd6. The author has been informed and the test will be fixed soon.

Original issue's description:
> Revert of Add Mojo interfaces for out-of-process proxy resolver. (patchset #4 id:60001 of https://codereview.chromium.org/900433003/)
>
> Reason for revert:
> http://build.chromium.org/p/chromium.linux/builders/Linux%20Tests%20%28dbg%29%281%29/builds/38575
> Broke device_unittests device_unittests SerialConnectionTest.Cancel it seems.
>
> Original issue's description:
> > Add Mojo interfaces for out-of-process proxy resolver.
> >
> > See:
> > https://docs.google.com/a/chromium.org/document/d/1n5hr4KJhZl2A4MicTfmyiHPdiKp7kmUoWXnRBN8SrZE/edit#
> >
> > BUG= 11746 
> >
> > Committed: https://crrev.com/073e42bb7587b90594e5799fb6a4afe08a1e1561
> > Cr-Commit-Position: refs/heads/master@{#314509}
>
> TBR=rdsmith@chromium.org,eroman@chromium.org,sammc@chromium.org,amistry@chromium.org
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG= 11746 
>
> Committed: https://crrev.com/7d4ec1aa24e79406d29e0cafbb531a3fabfe815f
> Cr-Commit-Position: refs/heads/master@{#314519}

TBR=rdsmith@chromium.org,eroman@chromium.org,sammc@chromium.org,noel@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= 11746 

Review URL: https://codereview.chromium.org/882173005

Cr-Commit-Position: refs/heads/master@{#314527}

[add] http://crrev.com/aa16ad225b47b9734e878bb4887651332fa12a9c/net/interfaces/BUILD.gn
[add] http://crrev.com/aa16ad225b47b9734e878bb4887651332fa12a9c/net/interfaces/host_resolver_service.mojom
[add] http://crrev.com/aa16ad225b47b9734e878bb4887651332fa12a9c/net/interfaces/proxy_resolver_service.mojom
[modify] http://crrev.com/aa16ad225b47b9734e878bb4887651332fa12a9c/net/net.gyp

Project Member Comment 43 by bugdroid1@chromium.org, Feb 13 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7e6ebfdc8f3536dc0246fcec458b27cdd836c3b5

commit 7e6ebfdc8f3536dc0246fcec458b27cdd836c3b5
Author: amistry <amistry@chromium.org>
Date: Fri Feb 13 04:19:11 2015

Implement browser-side host resolver Mojo service.

BUG= 11746 

Review URL: https://codereview.chromium.org/892393005

Cr-Commit-Position: refs/heads/master@{#316160}

[modify] http://crrev.com/7e6ebfdc8f3536dc0246fcec458b27cdd836c3b5/net/BUILD.gn
[modify] http://crrev.com/7e6ebfdc8f3536dc0246fcec458b27cdd836c3b5/net/DEPS
[add] http://crrev.com/7e6ebfdc8f3536dc0246fcec458b27cdd836c3b5/net/dns/mojo_host_resolver_impl.cc
[add] http://crrev.com/7e6ebfdc8f3536dc0246fcec458b27cdd836c3b5/net/dns/mojo_host_resolver_impl.h
[add] http://crrev.com/7e6ebfdc8f3536dc0246fcec458b27cdd836c3b5/net/dns/mojo_host_resolver_impl_unittest.cc
[add] http://crrev.com/7e6ebfdc8f3536dc0246fcec458b27cdd836c3b5/net/dns/mojo_type_converters.cc
[add] http://crrev.com/7e6ebfdc8f3536dc0246fcec458b27cdd836c3b5/net/dns/mojo_type_converters.h
[modify] http://crrev.com/7e6ebfdc8f3536dc0246fcec458b27cdd836c3b5/net/interfaces/host_resolver_service.mojom
[modify] http://crrev.com/7e6ebfdc8f3536dc0246fcec458b27cdd836c3b5/net/interfaces/proxy_resolver_service.mojom
[modify] http://crrev.com/7e6ebfdc8f3536dc0246fcec458b27cdd836c3b5/net/net.gyp
[modify] http://crrev.com/7e6ebfdc8f3536dc0246fcec458b27cdd836c3b5/net/net.gypi
[modify] http://crrev.com/7e6ebfdc8f3536dc0246fcec458b27cdd836c3b5/net/test/run_all_unittests.cc

Project Member Comment 44 by bugdroid1@chromium.org, Feb 25 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5403aa1dc4fa777f106c7c311644abf3d3d576ba

commit 5403aa1dc4fa777f106c7c311644abf3d3d576ba
Author: sammc <sammc@chromium.org>
Date: Wed Feb 25 04:59:21 2015

Implement utility-side proxy resolver Mojo service.

BUG= 11746 

Review URL: https://codereview.chromium.org/896203003

Cr-Commit-Position: refs/heads/master@{#317976}

[modify] http://crrev.com/5403aa1dc4fa777f106c7c311644abf3d3d576ba/net/BUILD.gn
[modify] http://crrev.com/5403aa1dc4fa777f106c7c311644abf3d3d576ba/net/DEPS
[modify] http://crrev.com/5403aa1dc4fa777f106c7c311644abf3d3d576ba/net/interfaces/proxy_resolver_service.mojom
[modify] http://crrev.com/5403aa1dc4fa777f106c7c311644abf3d3d576ba/net/net.gyp
[modify] http://crrev.com/5403aa1dc4fa777f106c7c311644abf3d3d576ba/net/net.gypi
[add] http://crrev.com/5403aa1dc4fa777f106c7c311644abf3d3d576ba/net/proxy/mojo_proxy_resolver_impl.cc
[add] http://crrev.com/5403aa1dc4fa777f106c7c311644abf3d3d576ba/net/proxy/mojo_proxy_resolver_impl.h
[add] http://crrev.com/5403aa1dc4fa777f106c7c311644abf3d3d576ba/net/proxy/mojo_proxy_resolver_impl_unittest.cc
[add] http://crrev.com/5403aa1dc4fa777f106c7c311644abf3d3d576ba/net/proxy/mojo_type_converters.cc
[add] http://crrev.com/5403aa1dc4fa777f106c7c311644abf3d3d576ba/net/proxy/mojo_type_converters.h
[modify] http://crrev.com/5403aa1dc4fa777f106c7c311644abf3d3d576ba/net/proxy/proxy_list.cc
[modify] http://crrev.com/5403aa1dc4fa777f106c7c311644abf3d3d576ba/net/proxy/proxy_list.h

Project Member Comment 47 by bugdroid1@chromium.org, Mar 6 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b91865cd50cb2c4be042178ca6c6a6448dde206b

commit b91865cd50cb2c4be042178ca6c6a6448dde206b
Author: amistry <amistry@chromium.org>
Date: Fri Mar 06 08:50:36 2015

Make net_utility_services depend on net_with_v8 instead of net.

Without this, windows release builds will fail to link when this is added to
the utility process build rule.

BUG= 11746 

Review URL: https://codereview.chromium.org/969393004

Cr-Commit-Position: refs/heads/master@{#319424}

[modify] http://crrev.com/b91865cd50cb2c4be042178ca6c6a6448dde206b/net/net.gyp

Project Member Comment 49 by bugdroid1@chromium.org, Mar 12 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a83d9e83e4a03050fec591b4375bec9a9d46bd3f

commit a83d9e83e4a03050fec591b4375bec9a9d46bd3f
Author: sammc <sammc@chromium.org>
Date: Thu Mar 12 03:42:47 2015

Add LoadState reporting to the mojo proxy resolver.

BUG= 11746 

Review URL: https://codereview.chromium.org/939503004

Cr-Commit-Position: refs/heads/master@{#320227}

[modify] http://crrev.com/a83d9e83e4a03050fec591b4375bec9a9d46bd3f/net/interfaces/proxy_resolver_service.mojom
[modify] http://crrev.com/a83d9e83e4a03050fec591b4375bec9a9d46bd3f/net/proxy/mojo_proxy_resolver_factory_impl.cc
[modify] http://crrev.com/a83d9e83e4a03050fec591b4375bec9a9d46bd3f/net/proxy/mojo_proxy_resolver_factory_impl.h
[modify] http://crrev.com/a83d9e83e4a03050fec591b4375bec9a9d46bd3f/net/proxy/mojo_proxy_resolver_factory_impl_unittest.cc
[modify] http://crrev.com/a83d9e83e4a03050fec591b4375bec9a9d46bd3f/net/proxy/mojo_proxy_resolver_impl.cc
[modify] http://crrev.com/a83d9e83e4a03050fec591b4375bec9a9d46bd3f/net/proxy/mojo_proxy_resolver_impl.h
[modify] http://crrev.com/a83d9e83e4a03050fec591b4375bec9a9d46bd3f/net/proxy/mojo_proxy_resolver_impl_unittest.cc
[modify] http://crrev.com/a83d9e83e4a03050fec591b4375bec9a9d46bd3f/net/proxy/proxy_resolver.h
[modify] http://crrev.com/a83d9e83e4a03050fec591b4375bec9a9d46bd3f/net/proxy/proxy_resolver_mojo.cc
[modify] http://crrev.com/a83d9e83e4a03050fec591b4375bec9a9d46bd3f/net/proxy/proxy_resolver_mojo_unittest.cc
[modify] http://crrev.com/a83d9e83e4a03050fec591b4375bec9a9d46bd3f/net/proxy/proxy_resolver_v8_tracing.cc
[modify] http://crrev.com/a83d9e83e4a03050fec591b4375bec9a9d46bd3f/net/proxy/proxy_resolver_v8_tracing.h

Project Member Comment 50 by bugdroid1@chromium.org, Mar 12 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6e1ed1ba34bf761fc17c111287b8828f2f409f6c

commit 6e1ed1ba34bf761fc17c111287b8828f2f409f6c
Author: amistry <amistry@chromium.org>
Date: Thu Mar 12 05:24:01 2015

Create an in-process v8 proxy resolver using Mojo.

This in-process mode will only be used for testing and debugging, and is
intentionally not exposed via about:flags.

BUG= 11746 

Review URL: https://codereview.chromium.org/910343003

Cr-Commit-Position: refs/heads/master@{#320236}

[modify] http://crrev.com/6e1ed1ba34bf761fc17c111287b8828f2f409f6c/chrome/browser/BUILD.gn
[modify] http://crrev.com/6e1ed1ba34bf761fc17c111287b8828f2f409f6c/chrome/browser/net/proxy_service_factory.cc
[modify] http://crrev.com/6e1ed1ba34bf761fc17c111287b8828f2f409f6c/chrome/chrome_browser.gypi
[modify] http://crrev.com/6e1ed1ba34bf761fc17c111287b8828f2f409f6c/chrome/common/chrome_switches.cc
[modify] http://crrev.com/6e1ed1ba34bf761fc17c111287b8828f2f409f6c/chrome/common/chrome_switches.h
[modify] http://crrev.com/6e1ed1ba34bf761fc17c111287b8828f2f409f6c/net/BUILD.gn
[modify] http://crrev.com/6e1ed1ba34bf761fc17c111287b8828f2f409f6c/net/net.gyp
[modify] http://crrev.com/6e1ed1ba34bf761fc17c111287b8828f2f409f6c/net/net.gypi
[add] http://crrev.com/6e1ed1ba34bf761fc17c111287b8828f2f409f6c/net/proxy/in_process_mojo_proxy_resolver_factory.cc
[add] http://crrev.com/6e1ed1ba34bf761fc17c111287b8828f2f409f6c/net/proxy/in_process_mojo_proxy_resolver_factory.h
[modify] http://crrev.com/6e1ed1ba34bf761fc17c111287b8828f2f409f6c/net/proxy/mojo_proxy_resolver_factory.h
[modify] http://crrev.com/6e1ed1ba34bf761fc17c111287b8828f2f409f6c/net/proxy/proxy_resolver_mojo_unittest.cc
[add] http://crrev.com/6e1ed1ba34bf761fc17c111287b8828f2f409f6c/net/proxy/proxy_service_mojo.cc
[add] http://crrev.com/6e1ed1ba34bf761fc17c111287b8828f2f409f6c/net/proxy/proxy_service_mojo.h
[add] http://crrev.com/6e1ed1ba34bf761fc17c111287b8828f2f409f6c/net/proxy/proxy_service_mojo_unittest.cc

Project Member Comment 51 by bugdroid1@chromium.org, Mar 12 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c804b538d674a85506c89b5650ae72d9c2b255b5

commit c804b538d674a85506c89b5650ae72d9c2b255b5
Author: sammc <sammc@chromium.org>
Date: Thu Mar 12 10:02:34 2015

Coalesce load state changes in MojoProxyResolverImpl.

When the load state of a ProxyResolver changes from DNS resolution to
running the proxy script, the time before either the script completing
or making another DNS request is usually short: <1ms. Since the load
state is used only for UI, these updates are triggering wasteful IPCs.
This CL fixes this by adding a wait of 10ms before reporting load state
changes, coalescing them with later changes if they occur during that
wait.

BUG= 11746 

Review URL: https://codereview.chromium.org/984573005

Cr-Commit-Position: refs/heads/master@{#320258}

[modify] http://crrev.com/c804b538d674a85506c89b5650ae72d9c2b255b5/net/BUILD.gn
[modify] http://crrev.com/c804b538d674a85506c89b5650ae72d9c2b255b5/net/net.gyp
[modify] http://crrev.com/c804b538d674a85506c89b5650ae72d9c2b255b5/net/net.gypi
[add] http://crrev.com/c804b538d674a85506c89b5650ae72d9c2b255b5/net/proxy/load_state_change_coalescer.cc
[add] http://crrev.com/c804b538d674a85506c89b5650ae72d9c2b255b5/net/proxy/load_state_change_coalescer.h
[add] http://crrev.com/c804b538d674a85506c89b5650ae72d9c2b255b5/net/proxy/load_state_change_coalescer_unittest.cc
[modify] http://crrev.com/c804b538d674a85506c89b5650ae72d9c2b255b5/net/proxy/mojo_proxy_resolver_impl.cc

Project Member Comment 52 by bugdroid1@chromium.org, Mar 13 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/467cdc7fc7bfb78b37066851023c833a55eacd0a

commit 467cdc7fc7bfb78b37066851023c833a55eacd0a
Author: amistry <amistry@chromium.org>
Date: Fri Mar 13 01:58:47 2015

Use a utility process for the Mojo v8 proxy resolver.

A single utility process is used for all proxy resolvers. If the process is
killed, a new one will be created.

BUG= 11746 

Review URL: https://codereview.chromium.org/940813003

Cr-Commit-Position: refs/heads/master@{#320430}

[modify] http://crrev.com/467cdc7fc7bfb78b37066851023c833a55eacd0a/chrome/browser/net/proxy_browsertest.cc
[modify] http://crrev.com/467cdc7fc7bfb78b37066851023c833a55eacd0a/chrome/browser/net/proxy_service_factory.cc
[add] http://crrev.com/467cdc7fc7bfb78b37066851023c833a55eacd0a/chrome/browser/net/utility_process_mojo_proxy_resolver_factory.cc
[add] http://crrev.com/467cdc7fc7bfb78b37066851023c833a55eacd0a/chrome/browser/net/utility_process_mojo_proxy_resolver_factory.h
[modify] http://crrev.com/467cdc7fc7bfb78b37066851023c833a55eacd0a/chrome/chrome_browser.gypi
[modify] http://crrev.com/467cdc7fc7bfb78b37066851023c833a55eacd0a/chrome/chrome_utility.gypi
[modify] http://crrev.com/467cdc7fc7bfb78b37066851023c833a55eacd0a/chrome/common/chrome_switches.cc
[modify] http://crrev.com/467cdc7fc7bfb78b37066851023c833a55eacd0a/chrome/common/chrome_switches.h
[modify] http://crrev.com/467cdc7fc7bfb78b37066851023c833a55eacd0a/chrome/utility/BUILD.gn
[modify] http://crrev.com/467cdc7fc7bfb78b37066851023c833a55eacd0a/chrome/utility/chrome_content_utility_client.cc
[modify] http://crrev.com/467cdc7fc7bfb78b37066851023c833a55eacd0a/chrome/utility/chrome_content_utility_client.h
[modify] http://crrev.com/467cdc7fc7bfb78b37066851023c833a55eacd0a/content/browser/utility_process_host_impl.cc
[modify] http://crrev.com/467cdc7fc7bfb78b37066851023c833a55eacd0a/content/browser/utility_process_host_impl.h
[modify] http://crrev.com/467cdc7fc7bfb78b37066851023c833a55eacd0a/content/public/browser/utility_process_host.h
[modify] http://crrev.com/467cdc7fc7bfb78b37066851023c833a55eacd0a/content/public/utility/content_utility_client.h
[modify] http://crrev.com/467cdc7fc7bfb78b37066851023c833a55eacd0a/content/utility/utility_thread_impl.cc

Blockedon: chromium:467832
An initial version of this has now been implemented. There are a lot of details to work out before shipping this, which I've split into a separate issue to avoid spamming everyone that's CC'd or starred this issue.
Blocking: chromium:482790
Comment 57 by cpu@chromium.org, Jun 5 2015
Cc: -cpu@chromium.org
Status: Fixed
The actual work was completed many months ago. I'm now tracking launch, so might as well close this issue.
Sign in to add a comment