summaryrefslogtreecommitdiffstats
path: root/chrome/browser/net/predictor_unittest.cc
Commit message (Collapse)AuthorAgeFilesLines
* chrome: Use base::MessageLoop. (Part 3)xhwang@chromium.org2013-05-281-10/+10
| | | | | | | | | | | | This CL updates chrome/browser/* other than chrome/browser/ui which is in another CL. BUG=236029 TBR=brettw Review URL: https://chromiumcodereview.appspot.com/14113053 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@202664 0039d316-1c4b-4281-b951-d872f2087c98
* net: move host_resolver files from net/base to net/dnsphajdan.jr@chromium.org2013-03-211-1/+1
| | | | | | | | BUG=70818 Review URL: https://codereview.chromium.org/12518036 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@189485 0039d316-1c4b-4281-b951-d872f2087c98
* Rename FilePath to base::FilePath and use new location of ↵brettw@chromium.org2013-02-081-1/+1
| | | | | | | | string_number_conversions in some chrome subdirectories. Review URL: https://codereview.chromium.org/12218065 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@181564 0039d316-1c4b-4281-b951-d872f2087c98
* chrome/browser: Update calls from RunAllPending() to RunUntilIdle().tfarina@chromium.org2012-11-171-4/+4
| | | | | | | | | | | | RunAllPending() is deprecated and we should switch to RunUntilIdle(). BUG=131220 TBR=ben@chromium.org Review URL: https://chromiumcodereview.appspot.com/11413050 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@168416 0039d316-1c4b-4281-b951-d872f2087c98
* Correct const accessors in base/values.(h|cc), Part II (ListValue)vabr@chromium.org2012-08-031-11/+18
| | | | | | | | | | | | | | For problem description and other info please see the BUG page. This is for ListValue. BUG=138946 TEST=N/A (no fix & no new feature) TBR=jar,zelidrag,scottbyer,mpcomplete,darin,achuith,sky,estade,atwilson,grt,thakis,jamesr,hans,sadrul,pastarmovj Review URL: https://chromiumcodereview.appspot.com/10837044 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@149819 0039d316-1c4b-4281-b951-d872f2087c98
* Move test_browser_thread.h from content\test to content\public\test. This ↵jam@chromium.org2012-06-041-1/+1
| | | | | | | | | | way we can enforce that internal content headers don't leak to embedders. BUG=98716 TBR=phajdan.jr Review URL: https://chromiumcodereview.appspot.com/10500016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@140254 0039d316-1c4b-4281-b951-d872f2087c98
* Remove static initializer in url_info.cc.pliard@chromium.org2012-03-091-1/+1
| | | | | | | | | | BUG=94925 TEST=unit_tests Review URL: http://codereview.chromium.org/9635018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@125844 0039d316-1c4b-4281-b951-d872f2087c98
* Fix a crash when viewing about:dns.eroman@chromium.org2012-03-011-0/+77
| | | | | | | | | BUG=116345 Review URL: http://codereview.chromium.org/9555017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@124394 0039d316-1c4b-4281-b951-d872f2087c98
* Convert use of int ms to TimeDelta in files owned by jar.tedvessenes@gmail.com2012-01-281-3/+5
| | | | | | | | | | | R=jar@chromium.org BUG=108171 TEST= Review URL: http://codereview.chromium.org/9190027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@119547 0039d316-1c4b-4281-b951-d872f2087c98
* Removing MessageLoop::QuitTask() from chrome/dcheng@chromium.org2011-12-101-1/+1
| | | | | | | | | | | | base/task.h is going away and being replaced by base/bind.h and base/callback.h. This CL was automatically generated by sed. BUG=none TEST=none Review URL: http://codereview.chromium.org/8873032 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@113896 0039d316-1c4b-4281-b951-d872f2087c98
* Remove HostResolverImpl from Mock*HostResolver. szym@chromium.org2011-11-081-5/+2
| | | | | | | | | | | | | | Original review: http://codereview.chromium.org/8267001/ TBR=rvargas BUG=99889 TEST=Green tree: ./net_unittests ; ./unit_tests --gtest_filter='PredictorTest.*' ; ./jingle_unittests Review URL: http://codereview.chromium.org/8491024 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@109030 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 108910 - Remove HostResolverImpl from Mock*HostResolver.szym@chromium.org2011-11-071-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | MockHostResolver should not depend on the job dispatch machinery of HostResolverImpl. This implementation aims to be more readable/reliable while providing the same testing utility. MockHostResolver does not use extra threads hence cannot support WaitingHostResolverProc. To mock slow resolution, HangingHostResolver is provided for unit_tests:PredictorTest. Updated host_resolver_impl_unittest to test HostResolverImpl directly (rather than through MockHostResolver). BUG=99889 TEST=./net_unittests ; ./unit_tests --gtest_filter='PredictorTest.*' ; ./jingle_unittests Review URL: http://codereview.chromium.org/8267001 TBR=szym@chromium.org Review URL: http://codereview.chromium.org/8491023 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@108922 0039d316-1c4b-4281-b951-d872f2087c98
* Remove HostResolverImpl from Mock*HostResolver.szym@chromium.org2011-11-071-5/+2
| | | | | | | | | | | | | | | | | | | | | MockHostResolver should not depend on the job dispatch machinery of HostResolverImpl. This implementation aims to be more readable/reliable while providing the same testing utility. MockHostResolver does not use extra threads hence cannot support WaitingHostResolverProc. To mock slow resolution, HangingHostResolver is provided for unit_tests:PredictorTest. Updated host_resolver_impl_unittest to test HostResolverImpl directly (rather than through MockHostResolver). BUG=99889 TEST=./net_unittests ; ./unit_tests --gtest_filter='PredictorTest.*' ; ./jingle_unittests Review URL: http://codereview.chromium.org/8267001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@108910 0039d316-1c4b-4281-b951-d872f2087c98
* Move BrowserThread to content namespace.joi@chromium.org2011-11-021-0/+1
| | | | | | | | | TBR=owners BUG=98716 Review URL: http://codereview.chromium.org/8437002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@108270 0039d316-1c4b-4281-b951-d872f2087c98
* Split BrowserThread into public API and private implementation, step 1.joi@chromium.org2011-10-281-3/+3
| | | | | | | | | | | | | | | | | | | | | Only content/ now has the ability to create BrowserThread objects, with the exception that tests can create the content::TestBrowserThread subclass, and (temporarily) code in chrome/ can create the DeprecatedBrowserThread subclass. A follow-up change will make content/ take care of its own thread creation, remove DeprecatedBrowserThread, and move all state and non-trivial constructors from BrowserThread down to BrowserThreadImpl. Also moved BrowserProcessSubThread into content/ namespace. As part of follow-up cleanup, chrome/ will stop using this class. BUG=98716 TEST=existing Review URL: http://codereview.chromium.org/8392042 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@107718 0039d316-1c4b-4281-b951-d872f2087c98
* Modifying prefetch to account for multi-profile.rlp@chromium.org2011-09-101-109/+82
| | | | | | | | | | | | | | | | | | | | Items of note: - predictor_api is gone. Most functions in predictor_api.cc have moved into the chrome_browser_net::Predictor class or the Profile class. - The predictor state is cleaned up in the Profile dtor. - Predictor is owned by the ProfileIOData of the profile. - InitialObserver class is gone since each profile keeps their own info, the non-OTR don't care if anyone is OTR. - Predictor is created by the profile and then passed to the ProfileIOData. Then its initialization is finished on the IOThread. - ConnectInterceptor now subclasses off of UrlRequestJobFactory::Interceptor. - Updated Profile to create a SimpleShutdownPredictor with limited functionality when in unittests. BUG=89937,90114 TEST=passes existing Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=97446 Review URL: http://codereview.chromium.org/7467012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@100555 0039d316-1c4b-4281-b951-d872f2087c98
* Update base/timer.h code to pass through Location from call sites. (reland) ↵jbates@chromium.org2011-09-021-1/+1
| | | | | | | | original CL w/LGTMs: http://codereview.chromium.org/7812036/ Review URL: http://codereview.chromium.org/7824041 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99409 0039d316-1c4b-4281-b951-d872f2087c98
* Revert "Currently, base/timer.cc calls PostTask with FROM_HERE as the Location,mattm@chromium.org2011-09-021-1/+1
| | | | | | | | | | | | so the original code that created the delayed callback is lost." This reverts commit 4cf5cf73d319b69c32ad30af8954235755856455. (r99284) TBR=jbates@chromium.org Review URL: http://codereview.chromium.org/7825026 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99290 0039d316-1c4b-4281-b951-d872f2087c98
* Currently, base/timer.cc calls PostTask with FROM_HERE as the Location, so ↵jbates@chromium.org2011-09-021-1/+1
| | | | | | | | | | the original code that created the delayed callback is lost. This change adds a tracked_objects::Location parameter to the APIs in base/timer.h so we can trace the PostTask callbacks. The other files are touched to add the FROM_HERE Location parameter. Review URL: http://codereview.chromium.org/7812036 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99284 0039d316-1c4b-4281-b951-d872f2087c98
* Reduce number of unnamed-type-template-args violations (mostly when passing ↵pkasting@chromium.org2011-09-011-4/+4
| | | | | | | | | | values to DCHECK(), ASSERT_EQ(), etc.), generally by naming previously-anonymous enums. We've decided not to eliminate the warning entirely because doing so is only possible with tons of ugly static_cast<>()s in Mac code. BUG=92247 TEST=Compiles Review URL: http://codereview.chromium.org/7605019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99086 0039d316-1c4b-4281-b951-d872f2087c98
* Revert "Modifying prefetch to account for multi-profile."avi@chromium.org2011-08-191-82/+109
| | | | | | | | | | | | | | This appears to make all the CF bots crash in chrome_frame_net_tests. This reverts commit r97446. BUG=89937 TEST=n/a TBR=rlp Review URL: http://codereview.chromium.org/7685009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97467 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 97465 - Revert 97446 - Modifying prefetch to account for multi-profile.avi@chromium.org2011-08-191-109/+82
| | | | | | | | | | | | | | | | | | | | | | | | Items of note: - predictor_api is gone. Most functions in predictor_api.cc have moved into the chrome_browser_net::Predictor class or the Profile class. - The predictor state is cleaned up in the Profile dtor. - Predictor is owned by the ProfileIOData of the profile. - InitialObserver class is gone since each profile keeps their own info, the non-OTR don't care if anyone is OTR. - Predictor is created by the profile and then passed to the ProfileIOData. Then its initialization is finished on the IOThread. - ConnectInterceptor now subclasses off of UrlRequestJobFactory::Interceptor. - Updated Profile to create a SimpleShutdownPredictor with limited functionality when in unittests. BUG=89937 TEST=passes existing Review URL: http://codereview.chromium.org/7467012 TBR=rlp@chromium.org Review URL: http://codereview.chromium.org/7690006 TBR=avi@chromium.org Review URL: http://codereview.chromium.org/7688006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97466 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 97446 - Modifying prefetch to account for multi-profile.avi@chromium.org2011-08-191-82/+109
| | | | | | | | | | | | | | | | | | | | | Items of note: - predictor_api is gone. Most functions in predictor_api.cc have moved into the chrome_browser_net::Predictor class or the Profile class. - The predictor state is cleaned up in the Profile dtor. - Predictor is owned by the ProfileIOData of the profile. - InitialObserver class is gone since each profile keeps their own info, the non-OTR don't care if anyone is OTR. - Predictor is created by the profile and then passed to the ProfileIOData. Then its initialization is finished on the IOThread. - ConnectInterceptor now subclasses off of UrlRequestJobFactory::Interceptor. - Updated Profile to create a SimpleShutdownPredictor with limited functionality when in unittests. BUG=89937 TEST=passes existing Review URL: http://codereview.chromium.org/7467012 TBR=rlp@chromium.org Review URL: http://codereview.chromium.org/7690006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97465 0039d316-1c4b-4281-b951-d872f2087c98
* Modifying prefetch to account for multi-profile.rlp@chromium.org2011-08-191-109/+82
| | | | | | | | | | | | | | | | | | Items of note: - predictor_api is gone. Most functions in predictor_api.cc have moved into the chrome_browser_net::Predictor class or the Profile class. - The predictor state is cleaned up in the Profile dtor. - Predictor is owned by the ProfileIOData of the profile. - InitialObserver class is gone since each profile keeps their own info, the non-OTR don't care if anyone is OTR. - Predictor is created by the profile and then passed to the ProfileIOData. Then its initialization is finished on the IOThread. - ConnectInterceptor now subclasses off of UrlRequestJobFactory::Interceptor. - Updated Profile to create a SimpleShutdownPredictor with limited functionality when in unittests. BUG=89937 TEST=passes existing Review URL: http://codereview.chromium.org/7467012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97446 0039d316-1c4b-4281-b951-d872f2087c98
* base: Remove using declaration of FundamentalValue as it's no longer necessary.tfarina@chromium.org2011-08-111-4/+5
| | | | | | | | | | | BUG=None TEST=None R=evan@chromium.org Review URL: http://codereview.chromium.org/7619006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@96400 0039d316-1c4b-4281-b951-d872f2087c98
* Consistently trim learned referrer databasejar@chromium.org2011-04-061-15/+29
| | | | | | | | | | | | | | | | | | | | Data learned during navigation, about subresources, was only being trimmed (pruned?) at shutdown. This CL regularly calls for reductions in contents. Without this, long lived clients can accumulate large lists. We also form two preconnections to a site if we have no prior info about its sub-resources. This accelerates learned activity. This CL also sets the initial estimate of number of connections needed to 2, so that we are more aggressive in our learning curves about sub-resources. R=mbelshe BUG=75200 Review URL: http://codereview.chromium.org/6628063 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@80637 0039d316-1c4b-4281-b951-d872f2087c98
* Add chrome.benchmark routines to clear the host and predictor caches.tonyg@chromium.org2011-03-281-0/+24
| | | | | | | | | | | | This will be used in web-page-replay to enable TCP preconnect and DNS prefetch. BUG=None TEST=unit_tests passes Review URL: http://codereview.chromium.org/6660008 Patch from Ziga Mahkovec <ziga@chromium.org>. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79610 0039d316-1c4b-4281-b951-d872f2087c98
* Move some files from base to base/memory.levin@chromium.org2011-03-281-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | raw_scoped_refptr_mismatch_checker.h ref_counted.cc ref_counted.h ref_counted_memory.cc ref_counted_memory.h ref_counted_unittest.cc scoped_callback_factory.h scoped_comptr_win.h scoped_handle.h scoped_native_library.cc scoped_native_library.h scoped_native_library_unittest.cc scoped_nsobject.h scoped_open_process.h scoped_ptr.h scoped_ptr_unittest.cc scoped_temp_dir.cc scoped_temp_dir.h scoped_temp_dir_unittest.cc scoped_vector.h singleton.h singleton_objc.h singleton_unittest.cc linked_ptr.h linked_ptr_unittest.cc weak_ptr.cc weak_ptr.h weak_ptr_unittest.cc BUG=None TEST=Compile Review URL: http://codereview.chromium.org/6714032 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79524 0039d316-1c4b-4281-b951-d872f2087c98
* Update a bunch of files to the new location of browser_thread.h jam@chromium.org2011-03-011-1/+1
| | | | | | | | TBR=avi Review URL: http://codereview.chromium.org/6594084 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76411 0039d316-1c4b-4281-b951-d872f2087c98
* Rename Real* to Double* in values.* and dependent filesarv@chromium.org2011-02-011-1/+1
| | | | | | | | | BUG=None TEST=Compiles and passes all tests Review URL: http://codereview.chromium.org/6248026 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@73232 0039d316-1c4b-4281-b951-d872f2087c98
* Convert implicit scoped_refptr constructor calls to explicit ones, part 1thakis@chromium.org2010-11-011-18/+18
| | | | | | | | | | | This CL was created automatically by this clang rewriter: http://codereview.appspot.com/2776043/ . I manually fixed a few rough spots of the rewriter output (doh1-3) and fixed all presubmit errors. BUG=28083 TEST=None Review URL: http://codereview.chromium.org/4192012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@64573 0039d316-1c4b-4281-b951-d872f2087c98
* Restrict total parallel DNS resolutionsjar@chromium.org2010-10-291-10/+9
| | | | | | | | | | | | | | | | | | | A/B tests suggest that large numbers of parallel resolutions may cause the DNS failure rate (re: ratio of "host not found" to "found") to rise. To stay safely away from that threshold, this change lowers the maximum parallel resolutions to 8, and restricts the speculative resolutions to 3. We are also running A/B tests which will look at the impact of modulating either of these values. BUG=3041 r=eroman Review URL: http://codereview.chromium.org/4111004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@64369 0039d316-1c4b-4281-b951-d872f2087c98
* Rename ChromeThread to BrowserThread Part21:tfarina@chromium.org2010-10-121-1/+1
| | | | | | | | | | | - Include browser_thread.h instead of chrome_thread.h in more 100 files. BUG=56926 TEST=trybots Review URL: http://codereview.chromium.org/3691006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62286 0039d316-1c4b-4281-b951-d872f2087c98
* Rename ChromeThread to BrowserThread Part8:tfarina@chromium.org2010-10-091-2/+2
| | | | | | | | | | | - Rename entries under net and password_manager and printing. BUG=56926 TEST=trybots Review URL: http://codereview.chromium.org/3645001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62062 0039d316-1c4b-4281-b951-d872f2087c98
* Stop refcounting HostResolver.willchan@chromium.org2010-10-011-34/+41
| | | | | | | | | BUG=46049 TEST=none Review URL: http://codereview.chromium.org/3601002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61256 0039d316-1c4b-4281-b951-d872f2087c98
* Don't resolve IP literals.vandebo@chromium.org2010-08-181-1/+1
| | | | | | | | | | | | | For each resolution request this checks to see if this 'host' is a literal ip address. If so, it synthesises a struct addrinfo and returns it without adding it to the cache. BUG=39830 TEST=unit tests, new and old Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=56384 Review URL: http://codereview.chromium.org/3023048 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56615 0039d316-1c4b-4281-b951-d872f2087c98
* Reduce "false positive" in preconnect rates.jar@chromium.org2010-08-181-1/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Histograms suggest that all too often, we create a preconnection for an omnibox entry (for a search URL), and then the connection goes unused. This probably happens when the first few letters of an URL are typed, but are misconstrued to be a search URL. I added code that requires a sequence of consecutive assertions by the omnibox that the URL is preconnectable (i.e., is a search URL). This will give me something to tune, but this CL pulls a number out of teh air, in hopes of getting some baseline. I also noticed that the unused connections courtesy of speculative subresource preconnection was higher than expected, and the number of cases where we didn't bother to even do a pre-resolut1ion for a subresource was higher than expected. It used to be that I did sub-resource pre-resolution for all 8 learned speculative names. Now that we have preconnection as an alternative, I extended the count to 10 names learned, but put in a threshold for expected connections. I adjusted the thresholds to increase the amount of pre-resolution, and decrease the amount of preconection. I really need an A/B test to optimize these, but initially I wanted to get a feel for what happens with different limits. BUG=42694 r=mbelshe Review URL: http://codereview.chromium.org/3126012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56538 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 56384 - Don't resolve IP literals.vandebo@chromium.org2010-08-171-1/+1
| | | | | | | | | | | | | | For each resolution request this checks to see if this 'host' is a literal ip address. If so, it synthesises a struct addrinfo and returns it without adding it to the cache. BUG=39830 TEST=unit tests, new and old Review URL: http://codereview.chromium.org/3023048 TBR=vandebo@chromium.org Review URL: http://codereview.chromium.org/3115014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56385 0039d316-1c4b-4281-b951-d872f2087c98
* Don't resolve IP literals.vandebo@chromium.org2010-08-171-1/+1
| | | | | | | | | | | For each resolution request this checks to see if this 'host' is a literal ip address. If so, it synthesises a struct addrinfo and returns it without adding it to the cache. BUG=39830 TEST=unit tests, new and old Review URL: http://codereview.chromium.org/3023048 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56384 0039d316-1c4b-4281-b951-d872f2087c98
* FBTF: Remove unneeded headers from base/ (part 4)thestig@chromium.org2010-08-071-0/+1
| | | | | | | | BUG=none TEST=none Review URL: http://codereview.chromium.org/2819094 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@55345 0039d316-1c4b-4281-b951-d872f2087c98
* Move the number conversions from string_util to a new file.brettw@chromium.org2010-07-301-3/+3
| | | | | | | | | | | | | Use the base namespace in the new file. Update callers. I removed all wstring variants and also the string->number ones that ignore the return value. That encourages people to write code and forget about error handling. TEST=included unit tests BUG=none Review URL: http://codereview.chromium.org/3056029 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@54355 0039d316-1c4b-4281-b951-d872f2087c98
* Support both preconnection, and pre-resolution for subresourcesjar@chromium.org2010-07-281-134/+36
| | | | | | | | | | | | | | | With this change, both preconnection and preresolution are enabled when the --enable-preconnection flag is turned on. I'm expecting to enable this feature by default soon, so as to better tune the parameters. BUG=42694 r=mbelshe Review URL: http://codereview.chromium.org/3032014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@54044 0039d316-1c4b-4281-b951-d872f2087c98
* Rename Dns prefetching files to Predictor filesjar@chromium.org2010-06-271-0/+640
We are now doing more than DNS pre-resolution, and want to do TCP/IP pre-warming. This change uses the updated class names etc., and tries to use Predictor as the common element in most names. r=mbelshe Review URL: http://codereview.chromium.org/2866026 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@50951 0039d316-1c4b-4281-b951-d872f2087c98