summaryrefslogtreecommitdiffstats
path: root/chrome/browser/download
Commit message (Collapse)AuthorAgeFilesLines
* Fixes almost all of the rest of lint errors in the chrome/ directory (minus ↵erg@google.com2009-11-137-12/+13
| | | | | | | | the really hard ones which will need actual review instead of rubber-stamping.) Review URL: http://codereview.chromium.org/386026 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31932 0039d316-1c4b-4281-b951-d872f2087c98
* A large number of style nits in preparation for turning on automated cpplint.py.erg@google.com2009-11-112-2/+3
| | | | | | Review URL: http://codereview.chromium.org/385023 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31669 0039d316-1c4b-4281-b951-d872f2087c98
* Mark all tests in the DownloadTest suite as flaky under Windows (as ↵rolandsteiner@chromium.org2009-11-101-5/+19
| | | | | | | | | | | | | | | discussed in this review). As discussed under http://codereview.chromium.org/342056 . Note: did not change that ContentDisposition test, which was already marked as FLAKY for all platforms, nor KnownSize, which is DISABLED. BUG=20809 TEST=none Review URL: http://codereview.chromium.org/342056 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31549 0039d316-1c4b-4281-b951-d872f2087c98
* Basic wiring to enable downloads for CF's host browser network stack. A ↵tommi@chromium.org2009-11-073-0/+13
| | | | | | | | notable change here is that url automation job id's no longer exist and instead a request id is used. There's a 1 to 1 relation between a job and a request so this is more convenient. Review URL: http://codereview.chromium.org/355036 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31363 0039d316-1c4b-4281-b951-d872f2087c98
* Revert "Revert r31175 r31176 r31187"hclam@chromium.org2009-11-065-6/+19
| | | | | | | | | | | | The bustage seems to be a WebKit change upstream. It is not reverted in WebKit and merger. So bring the innocent change back in. TBR=jam TEST=green tree Review URL: http://codereview.chromium.org/375009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31214 0039d316-1c4b-4281-b951-d872f2087c98
* Rever r31175 r31176 r31187hclam@chromium.org2009-11-065-19/+6
| | | | | | | | | | | XP tests are failing, the guess is r31175 and r31176. TBR=beng TEST=XP tests go green Review URL: http://codereview.chromium.org/376008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31201 0039d316-1c4b-4281-b951-d872f2087c98
* If the download manager setting "prompt for a location for each downloaded ↵aa@chromium.org2009-11-061-3/+3
| | | | | | | | | | | | | file" is set, we weren't installing user scripts. It probably makes sense to check the ".user.js" on the URL always, instead of the path, since that is really what is supposed to happen conceptually. BUG=26801 TEST=Set settings to always prompt for download location. Install user script. Should get extension install prompt. Review URL: http://codereview.chromium.org/372006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31179 0039d316-1c4b-4281-b951-d872f2087c98
* Sixth patch in making destructors of refcounted objects private.jam@chromium.org2009-11-065-6/+19
| | | | | | | | BUG=26749 Review URL: http://codereview.chromium.org/370001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31176 0039d316-1c4b-4281-b951-d872f2087c98
* Enable localization of default downloaded filename.tony@chromium.org2009-11-042-3/+14
| | | | | | | | | | | | | | | Instead of localizing "download" string in net_util.cc, make a caller, download_manger, provide a localized string. BUG=25289 TEST=NetUtilTest.GetSuggestedFilename,DownloadManagerTest.TestDownloadFilename Original patch by hayato@google.com at: http://codereview.chromium.org/343014/show Review URL: http://codereview.chromium.org/367003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30971 0039d316-1c4b-4281-b951-d872f2087c98
* Add first class support for user scripts.aa@chromium.org2009-11-041-10/+34
| | | | | | | | | | | | Original review: http://codereview.chromium.org/340057 TBR=mpcomplete@chromium.org BUG=22103 TEST=Install a user script (such as from userscripts.org). You should get the extension install UI and the script should show up in the extension management UI. It should also work, though some scripts use Firefox-specific APIs and those won't work in Chromium. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30925 0039d316-1c4b-4281-b951-d872f2087c98
* Last patch in removing MessageLoop* caching.jam@chromium.org2009-11-033-25/+19
| | | | | | | BUG=25354 Review URL: http://codereview.chromium.org/353015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30881 0039d316-1c4b-4281-b951-d872f2087c98
* Fourth patch in getting rid of caching MessageLoop pointers.jam@chromium.org2009-11-025-225/+147
| | | | | | | BUG=25354 Review URL: http://codereview.chromium.org/348037 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30751 0039d316-1c4b-4281-b951-d872f2087c98
* Clean up temp scaffolding stubs some. It can be mac only now.estade@chromium.org2009-11-021-2/+0
| | | | | | | | BUG=9295,8077 TEST=trybots Review URL: http://codereview.chromium.org/340052 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30714 0039d316-1c4b-4281-b951-d872f2087c98
* Disable DownloadTest.PerWindowShelf because of flakiness.mirandac@chromium.org2009-10-301-1/+2
| | | | | | | | | BUG= http://crbug.com/26325 TEST= none Review URL: http://codereview.chromium.org/348024 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30590 0039d316-1c4b-4281-b951-d872f2087c98
* Get rid of MessageLoop* caching in extensions code.jam@chromium.org2009-10-301-1/+0
| | | | | | | BUG=25354 Review URL: http://codereview.chromium.org/345023 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30550 0039d316-1c4b-4281-b951-d872f2087c98
* Unflaky tests.thakis@chromium.org2009-10-291-4/+2
| | | | | | | | | | | Since bug 24721 is fixed, these might work again. They don't show up on the flakiness dashboard, suggesting that they behaved for a while. BUG=24632,24889 TEST=Tests not super flaky Review URL: http://codereview.chromium.org/345024 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30532 0039d316-1c4b-4281-b951-d872f2087c98
* First of several patches to get rid of MessageLoop caching now that we have ↵jam@chromium.org2009-10-282-84/+64
| | | | | | | | | ChromeThread::PostTask. BUG=25354 Review URL: http://codereview.chromium.org/342020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30383 0039d316-1c4b-4281-b951-d872f2087c98
* Fix for bug 10876 that resulted in some refactoring:rolandsteiner@chromium.org2009-10-284-40/+58
| | | | | | | | | | | | | | | | | | | | | The bug originates from extensions being treated case sensitive on Windows and Mac OSX, where they shouldn't be. Therefore I added generic static methods to FilePath to compare strings in the same way the file system does, and changed the relevant parts of the code to make use of them. I tested the methods under Windows and Mac OS X. I also wrote a basic version for Linux/Posix that behaves the same way as the original code, so there should at least be no regression. Also, while fixing this I found some confusion in the code about whether extensions are used with or without leading dot. For this reason I changed some functions that were taking an extension as parameter to instead take the whole file path. This makes calling these functions easier and the caller doesn't need to know whether the extension is supposed to be with or without dot. In the same vein, I split DownloadManager::IsExecutable into IsExecutableFile, where one again passes in the whole file and doesn't have to worry about getting the extension right, and IsExecutableExtension, which corresponds to the original functionality. Ideally only the former method should be public, but that again would have required further code scrubbing that was (even more) outside of the original bug fix. Finally, fixed a wrong comment in the file path tests. BUG=10876 TEST=FilePathTest.MatchesExtension, .CompareIgnoreCase Review URL: http://codereview.chromium.org/149796 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30323 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 30168 - Commit patch set from http://codereview.chromium.org/149796rolandsteiner@chromium.org2009-10-274-58/+40
| | | | | | | | | | | | | (see discussion and history there) BUG=10876 TEST=FilePathTest.MatchesExtension.CompareIgnoreCase TBR=rolandsteiner@chromium.org Review URL: http://codereview.chromium.org/337042 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30170 0039d316-1c4b-4281-b951-d872f2087c98
* Commit patch set from http://codereview.chromium.org/149796rolandsteiner@chromium.org2009-10-274-40/+58
| | | | | | | | | | (see discussion and history there) BUG=10876 TEST=FilePathTest.MatchesExtension.CompareIgnoreCase git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30168 0039d316-1c4b-4281-b951-d872f2087c98
* Simplify threading in browser thread by making only ChromeThread deal with ↵jam@chromium.org2009-10-273-52/+43
| | | | | | | | different thread lifetimes.The rest of the code doesn't get MessageLoop pointers since they're not thread-safe and instead just call PostTask on ChromeThread. If the target thread is not alive, then the task is simply deleted.In a followup change, I'll remove any remaining MessageLoop* caching. With this change, there's little to be gained by caching since no locks are involved if the target MessageLoop is guaranteed to outlive the current thread (inferred automatically by the order of the chrome_threads_ array).BUG=25354 Review URL: http://codereview.chromium.org/306032 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30163 0039d316-1c4b-4281-b951-d872f2087c98
* Move initialization of ChromeURLRequestContexts to the IO thread.eroman@chromium.org2009-10-238-35/+53
| | | | | | | | | | | | | | | | | | | | | | | Before, these URLRequestContexts were lazily created from the UI thread. Unfortunately that model made it easy for consumers on the UI thread to poke at stuff which was being used from the IO thread, and introduce races. So instead of providing a URLRequestContext*, the Profile now vends a URLRequestContextGetter*. The consequence of this is: * Consumers on the UI thread can no longer get access to a URLRequestContext. * Consumers on the IO thread need to call URLRequestContextGetter::GetURLRequestContext() to get at the context. This uses the same style lazy-creation of URLRequestContexts, albeit from the IO thread. OK, so now the smelly part: There were a couple of consumers of URLRequestContext on the UI thread that can't easily be moved to the IO thread -- these are the consumers of the cookie store. Before they could happily mess with the cookie store from the UI thread, and this was fine since CookieStore is threadsafe. However under the new model, they have no way to get at the URLRequestContext from the UI thread, hence can't get a pointer to the cookie store. To support that use-cases, I bastardized the API some by adding a URLRequestContextGetter::GetCookieStore() method that lets UI thread consumers get a pointer to the cookie store, since we know this particular cross-thread usage is safe. BUG=http://crbug.com/22294 Review URL: http://codereview.chromium.org/258008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29880 0039d316-1c4b-4281-b951-d872f2087c98
* Disable system suspend while downloading files on win32.mark@chromium.org2009-10-232-1/+6
| | | | | | | | | | | | | | | | | | | | If the system goes into power-save sleep mode while downloading files, the download fails. So, prevent sleep mode until the download finishes. This patch introduces a new RAII class to request that the system's power-save mode be disabled - PowerSaveBlocker. This is only implemented for win32; other platforms are stubbed out. This only partially implements bug 25420 it only attempts to handle the downloading case. Patch by Bryan Donlan <bdonlan@gmail.com> BUG=25420 TEST=Download a large file with the system sleep timeout set to a short interval. Review URL: http://codereview.chromium.org/287017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29873 0039d316-1c4b-4281-b951-d872f2087c98
* Do some cleanup of file path name handling.brettw@chromium.org2009-10-222-15/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | This started trying to cleanup DownloadManager::GenerateFilename which asserts if your system locale isn't UTF-8 (I ran into this when mine got messed up). The solution is to have GetSuggestedFilename return a FilePath rather than calling FromWStringHack. The rest of the patch is a result of trying to write GetSuggestedFilename in a reasonable way. I changed ReplaceIllegalCharacters to work on a FilePath::StringType. Some places in the code calling these functions got cleaner, some got messier. I think overall the ones that got messier are the ones doing sketchy things with paths and the ones that got cleaner are the ones doing things more properly. The only code here that gets called a nontrivial number of times is the weburlloader, and I think the new code does about the same number of string conversions overall (though on certain platforms the number will be higher or lower). BUG=none TEST=none Review URL: http://codereview.chromium.org/271056 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29832 0039d316-1c4b-4281-b951-d872f2087c98
* A few more #ifdefs for platform-specific behaviors to port this test to mac.mark@chromium.org2009-10-221-52/+79
| | | | | | | | | | | Haven't tested outside of mac yet, so the guard for GetSafeFilename is still present for linux. Trybot should be run to make sure it passed in Win. BUG=21632 TEST=none Review URL: http://codereview.chromium.org/296001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29797 0039d316-1c4b-4281-b951-d872f2087c98
* Test has failed a few times in the current waterfall display. The bug that ↵thomasvl@chromium.org2009-10-161-1/+2
| | | | | | | | | | enabled it is still open, so tagging it to that bug and just marking as flaky. TEST=none BUG=20809 Review URL: http://codereview.chromium.org/276060 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29275 0039d316-1c4b-4281-b951-d872f2087c98
* Add DownloadMimeTest to the flaky list.nsylvain@chromium.org2009-10-151-1/+2
| | | | | | | BUG:24889 Review URL: http://codereview.chromium.org/276043 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29111 0039d316-1c4b-4281-b951-d872f2087c98
* Use FilePath in URLRequestMocks.evan@chromium.org2009-10-143-11/+10
| | | | | | | | | BUG=24672 TEST=compiles Review URL: http://codereview.chromium.org/271066 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29013 0039d316-1c4b-4281-b951-d872f2087c98
* Make the multiple download request dialog an infobar.estade@chromium.org2009-10-148-188/+209
| | | | | | | | | | | | The icon is a placeholder until Glen makes a pretty one. BUG=24047 TEST=go to skypher.com/SkyLined/Repro/Chrome/carpet bombing/repro.html allow, deny, closing infobar, and closing tab all work as expected Review URL: http://codereview.chromium.org/275011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29006 0039d316-1c4b-4281-b951-d872f2087c98
* Remove the unnecessary conversion to wstring when calling file_util::WriteFile.evan@chromium.org2009-10-131-1/+1
| | | | | | | | | | | | Also use FilePath in npapi_test_helper. BUG=24672 TEST=compiled Review URL: http://codereview.chromium.org/266061 Patch from Thiago Farina <tfarina@gmail.com>. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@28856 0039d316-1c4b-4281-b951-d872f2087c98
* This patch enables "Save page as" (ctrl+s) for resources located atjamesr@chromium.org2009-10-131-4/+6
| | | | | | | | | | | | | | | | | | chrome-extension URLs. In the absence of any API for doing file I/O this adds very useful functionality to chrome extensions. This patch is needed to allow APU to save its instrumentation data to disk without the need for a plugin. patch by: Jaime Yap (jaimeyap@google.com) BUG=none TEST=Bundle a page "foo.html" with an extension. Usings the tabs API or window.open, open "foo.html" in the extensions process. Try to save it using CTRL+S. (You can test with any of the existing samples that bundle a page). Review URL: http://codereview.chromium.org/266051 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@28839 0039d316-1c4b-4281-b951-d872f2087c98
* Mark the IcognitoDownload as flaky because it keepsnsylvain@chromium.org2009-10-131-1/+2
| | | | | | | | | failing on mac. BUG:24684 Review URL: http://codereview.chromium.org/266059 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@28780 0039d316-1c4b-4281-b951-d872f2087c98
* Move native_widget_types and gtk_native_view_id_manager from base/gfx tobrettw@chromium.org2009-10-112-2/+2
| | | | | | | | | | | | app/gfx in preparation for removing the base_gfx project. This also moves base/window_impl.cc to app/win/window_impl because this file shouldn't be in base. TEST=none BUG=none Review URL: http://codereview.chromium.org/273017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@28691 0039d316-1c4b-4281-b951-d872f2087c98
* Change text for extension download UI.sidchat@chromium.org2009-10-092-10/+12
| | | | | | | | BUG=23105 TEST=none Review URL: http://codereview.chromium.org/261026 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@28621 0039d316-1c4b-4281-b951-d872f2087c98
* Move more ICU-dependent stuff from base into base/i18n. Some test stuff alsobrettw@chromium.org2009-10-091-1/+1
| | | | | | | | | | | | depended on this, so to make the DEPS work out, I made a new base/test directory where I moved the testing-related files into a new directory base/test. TEST=none BUG=none Review URL: http://codereview.chromium.org/266038 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@28569 0039d316-1c4b-4281-b951-d872f2087c98
* Make on-demand download directory creation safe.estade@chromium.org2009-10-094-20/+39
| | | | | | | | | | | If the SavePackage or SaveFileManager went down at the wrong time (most likely during shutdown), we potentially could have crashed. Avoid this race by using a specialized Task instaed of SaveFileManager, and by making the SavePackage callback task scoped. BUG=none TEST=downloads still work, whether or not the downloads dir exists. Review URL: http://codereview.chromium.org/262019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@28511 0039d316-1c4b-4281-b951-d872f2087c98
* Separate out some more ICU from base and into base/i18n.brettw@chromium.org2009-10-082-5/+8
| | | | | | | | | | | | | | | | | | | | This moves string_util_icu. I moved the number formatting function into base/i18n/number_formatting and just removed the other function in string_util_icu which was TrimWhitespaceUTF8. It is only used in a few places and isn't actually helpful (and the fact that it round-trips through UTF-16 is better for the caller to see). This takes out the sorting from the FileEnumerator. The comment says the sorting is not guaranteed. I moved it into file_util_icu as a standalone function for callers of FileEnumerator to call manually if they need sorted results. I modified the directory lister to use this sorting instead, and filed a bug on doing more optimal JS-based sorting. TEST=none BUG=none Review URL: http://codereview.chromium.org/267001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@28405 0039d316-1c4b-4281-b951-d872f2087c98
* One more bad extension.abarth@chromium.org2009-10-081-0/+1
| | | | | | Review URL: http://codereview.chromium.org/261022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@28385 0039d316-1c4b-4281-b951-d872f2087c98
* Add more extensions to our download_exe list.abarth@chromium.org2009-10-071-0/+6
| | | | | | Review URL: http://codereview.chromium.org/243115 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@28235 0039d316-1c4b-4281-b951-d872f2087c98
* Copy the relevant parts of ICU to a new file base/third_party/icu/icu_utf.*brettw@chromium.org2009-10-071-1/+17
| | | | | | | | | | | | | | so we can do basic UTF8/16/32 conversions without linking all of ICU. Change callers who used to call SysUTF8ToWide/SysWideToUTF8 in base to using these new functions. I will remove the Sys versions of these functions in a later patch. TEST=none BUG=none Review URL: http://codereview.chromium.org/243102 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@28219 0039d316-1c4b-4281-b951-d872f2087c98
* Make sure download shelf items and download items don't share names.mhm@chromium.org2009-10-011-1/+1
| | | | | | | | | BUG=23046 TEST=Compiled and ran on Windows Review URL: http://codereview.chromium.org/242082 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27696 0039d316-1c4b-4281-b951-d872f2087c98
* Landing patch from contributor Thiago Farina.finnur@chromium.org2009-09-302-2/+2
| | | | | | | | | | | Update GetDownloadDirectory to take FilePath instead of wstring to avoid conversions "To and From wstring". BUG=None TEST=run ui_tests.exe Review URL: http://codereview.chromium.org/243047 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27653 0039d316-1c4b-4281-b951-d872f2087c98
* Add kMDItemWhereFroms metadata attribute to downloaded files. Combine with ↵pinkerton@chromium.org2009-09-291-3/+5
| | | | | | | | | | quarantine utility function and move into chrome/browser/cocoa, since common/ is not the right place for browser code. BUG=22289 TEST=file downloading Review URL: http://codereview.chromium.org/220037 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27483 0039d316-1c4b-4281-b951-d872f2087c98
* Coverity: Initialize all of the member variables in the default constructor.jhawkins@chromium.org2009-09-281-11/+20
| | | | | | | | | CID=1424 BUG=none TEST=none Review URL: http://codereview.chromium.org/245029 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27402 0039d316-1c4b-4281-b951-d872f2087c98
* Update the TabContents::SavePage parameter to take FilePath instead of ↵rsesek@chromium.org2009-09-261-6/+3
| | | | | | | | | | | | wstring to avoid conversions "To and From wstring". BUG=None TEST=run unit_tests.exe Review URL: http://codereview.chromium.org/217008 Patch from tfarina. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27331 0039d316-1c4b-4281-b951-d872f2087c98
* Remove the context menu item 'Remove from shelf' from download shelfmhm@chromium.org2009-09-262-12/+0
| | | | | | | | | BUG=23078 TEST=No more menu item on download item Review URL: http://codereview.chromium.org/246004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27312 0039d316-1c4b-4281-b951-d872f2087c98
* Create the download folder if it doesn't exist. That is, the actual download ↵thestig@chromium.org2009-09-254-49/+84
| | | | | | | | | | folder, not the default one. BUG=21759 TEST=none Review URL: http://codereview.chromium.org/219017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27266 0039d316-1c4b-4281-b951-d872f2087c98
* Make extension installation work when the "ask for destinationaa@chromium.org2009-09-251-2/+7
| | | | | | | | | | | of every download" preference is set. BUG=23011 TEST=Set the preference in question, install an extension. You should not get a save as dialog and it should install correctly. Review URL: http://codereview.chromium.org/252005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27262 0039d316-1c4b-4281-b951-d872f2087c98
* linux: port some of the download manager unit testevan@chromium.org2009-09-251-23/+137
| | | | | | | | | | | | Mostly lots of #ifdefs tracking platform behaviors. I tried to make the logic correct for Mac, too, but I didn't enable Mac here. BUG=21632 Review URL: http://codereview.chromium.org/220025 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27260 0039d316-1c4b-4281-b951-d872f2087c98
* Coverity: Initialize file_loop_ and io_loop_ in the constructor.jhawkins@chromium.org2009-09-251-0/+2
| | | | | | | | | CID=1405 BUG=none TEST=none Review URL: http://codereview.chromium.org/245004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27215 0039d316-1c4b-4281-b951-d872f2087c98