| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
Increased IPC message header type from 16 bits to 32 bits so it can accomodate more message classes.
TEST=none
BUG=none
Review URL: http://codereview.chromium.org/399013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33832 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1) Make it explicit that it only supports ASCII (since it iterates
character by character).
2) Limit the recursion to 16 levels. We could allow more, but in the
case of a ?, it has exponential complexity, so I figured 16 was a good
stopping point. It seems rare that someone would have more than 16
'?' and '*'s.
BUG=28645
Review URL: http://codereview.chromium.org/460047
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33748 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
out to wininet like about:blank.
Altering constant name pulled in from latest platform SDK to avoid naming conflicts for those with said SDK.
Add slightly more logging to error messages.
BUG=DCHECK hit when loading about:blank.
TEST=Load about:blank in a debug build and no DCHECK is seen.
Review URL: http://codereview.chromium.org/465030
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33706 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
X-UA-Compatible HTTP header (in addition to the meta tag support).
Also pins the CF module into the process such that it won't get unloaded. Doing this to work around how we can get unloaded without unpatching properly.
BUG=22802
TEST=Navigate to a web site whose server sends the X-UA-Compatible: chrome=1 HTTP header and ensure that the page is loaded in CF.
Review URL: http://codereview.chromium.org/465009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33629 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
builder.
1. FullTabIE_CFInstallBasic
2. FullTabIE_CFInstallDismiss
3. FullTabIE_CFInstallOverlay
4. FullTabIE_CFInstallPlace
Bug=29193
TBR=slightlyoff
Review URL: http://codereview.chromium.org/465008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33578 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
frame builder.
Fixes as below:-
1. Instantiate the SystemMonitor object as it is needed to instantiate the profile.
2. Adds the single-process command line to the chrome_frame_net_tests executable to ensure
that the webkit thread gets initialized correctly.
3. Register additional prefs in the profile to get around some DCHECKS which fire in debug
mode
TBR=tommi
Review URL: http://codereview.chromium.org/464001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33570 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
UrlmonUrlRequest::EndRequestInternal task
executing and the OnStopBinding function getting called by Urlmon. If our task executes first we essentially
operate on an invalid object.
Fixes http://code.google.com/p/chromium/issues/detail?id=29033
Added a comment to the EndRequest function indicating that it is invalid to access any members after it
is called. Added a helper function to release the bindings and revoke the bind status callback.
Bug=29033
Review URL: http://codereview.chromium.org/456013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33551 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
TEST=none
BUG=none
Review URL: http://codereview.chromium.org/454004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33324 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
TBR=pawel
Review URL: http://codereview.chromium.org/453007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33309 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
TEST=none
BUG=none
Review URL: http://codereview.chromium.org/454004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33301 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
SystemMonitor makes an assumption that through its lifetime a MessageLoop exists and stays the same. It is difficult and error-prone to satisfy that when it is a Singleton. It has caused problems in the past.
Additionally, extract HighResoltionTimerManager out of time_win.cc, eliminating yet another Singleton.
TEST=none
BUG=none
Review URL: http://codereview.chromium.org/431008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33214 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
BUG=0
TEST=none
Review URL: http://codereview.chromium.org/437064
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33122 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
browser.
TEST=fixes net tests for chrome frame
BUG=none
Review URL: http://codereview.chromium.org/437050
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33094 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
via redirect) in a web page displayed by Chrome Frame. The request should be handled by the host browser.BUG=23561
Review URL: http://codereview.chromium.org/385108
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33022 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
implicitly follows redirects.
When Chrome receives a notification about a redirect it also attempts to follow the redirect request. While
this works in most cases, some sites actually returned an error for the second request initiated by Chrome.
Fix is to abort the request in urlmon, when we receive a notification about a redirect. I also fixed the
IsRedirectResponse function in the UrlRequestAutomationJob class to only treat 301, 302, 303 and 307 as
redirect codes on the same lines as the default http job.
Test=covered by existing network tests.
I also verified that http://code.google.com/p/chromium/issues/detail?id=25643 works with this CL.
Fixes http://code.google.com/p/chromium/issues/detail?id=28296
Bug=28296
Review URL: http://codereview.chromium.org/402107
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32896 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
| |
framwork include a non-scriptable interface for getting window handles from
chrome frame activex and methods for sending input in the WebBrowserSink.
BUG=none
TEST=back forward unit test for url fragments (anchor)
Review URL: http://codereview.chromium.org/430002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32882 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
The CLSCTX_ENABLE_CLOAKING flag if passed in to CoCreateInstance for Internet Explorer on IE causes the
API to fail with E_INVALIDARG. We now or in this flag only for vista or greater.
TBR=stoyan
Review URL: http://codereview.chromium.org/434013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32869 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit 9da05365beb211e3879e6049547e5e92c4c0a5a2 (r32811).
TBR=thiago.farina@gmail.com
BUG=32811
Review URL: http://codereview.chromium.org/437011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32817 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
| |
BUG=24672
TEST=installer_util_unittests and setup_unittests
Review URL: http://codereview.chromium.org/385129
Patch from Thiago Farina <thiago.farina@gmail.com>.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32811 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
plugin_service.cc/.h
The test automation provider registers itself as a protocol factory for http/https requests. This
is to ensure that intercepts set by the url request network tests work correctly. I was seeing these
tests fail consistently on my setup as their intercept function would never get called.
The other change is to add a simple mechanism based on a boolean flag to disable browser side plugins
like gears which also intercept network requests and expect to be called on the IO thread. The chrome
frame network tests run in a relatively simple environment where the network tests run in a separate thread
(not the IO thread) which causes a number of DCHECKS to fire in debug build test runs. The flag used to
determine whether browser plugins are loaded defaults to true.
Review URL: http://codereview.chromium.org/414017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32739 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
| |
Review URL: http://codereview.chromium.org/402089
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32699 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
Some refactoring of ExternalTabUITestMockClient.
TEST=ui_tests
Review URL: http://codereview.chromium.org/384058
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32504 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
full tab mode.
This fixes bug http://code.google.com/p/chromium/issues/detail?id=22745
Test=Covered by unit test.
Bug=22745
Review URL: http://codereview.chromium.org/402079
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32497 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
BUG=none
TEST=none
TBR=iyengar
Review URL: http://codereview.chromium.org/405029
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32489 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
the marker did not previously exist.
BUG=none
TEST=call the UnregisterNPAPIPlugin entrypoint on npchrome_tab.dll when the NPAPI plug-in is not previously installed with Firefox; it should not return an error.
Review URL: http://codereview.chromium.org/402062
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32480 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
| |
front-ends send this rather than simply omitting the X-Frame-Options
header altogether.
BUG=none
TEST=chrome_frame_unittests.exe
Review URL: http://codereview.chromium.org/404003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32473 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Added support for anchor (url fragments). this involves
mainly implementing IPersistHistory. The rest of the stuff
is a song and dance to get called in IPersistHistory in the
first place and then behave correctly when we do.
BUG=23981
TEst=unit tests added and back forward with '#' URLs, sub frames etc.
Review URL: http://codereview.chromium.org/371004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32454 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
times. This test fabricates keyboard
input to IE by forcing the IE window to the foreground. This is achieved by registering a hot key, sending
a keyboard message and waiting in a message loop for the hot key message. Apparently there are scenarios
where this hot key message is not dispatched at all and we end up waiting in the message loop for ever.
To get around this, we set a timer and if this fires we exit the loop.
TBR=amit
Review URL: http://codereview.chromium.org/406005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32359 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
buildbot.
Reopened bug http://code.google.com/p/chromium/issues/detail?id=26549
Bug=26549
TBR=amit
Review URL: http://codereview.chromium.org/400031
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32281 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
BUG=28038
Test=none
Review URL: http://codereview.chromium.org/397028
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32250 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
headers.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/402013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32183 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
MAD.
TEST=Should fix the issue MAD saw when starting up and tearing down the host browser in quick succession. Please see bug description.
BUG=27641
Review URL: http://codereview.chromium.org/387049
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31935 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
correctly in ChromeFrame. We specifically
test for uppercase characters generated in combination with the Shift key.
Added a helper function to explicitly give focus to a passed in HWND. This is done by sending the mouse move/mouse
down and mouse up events to the window. We also use this in the AboutChromeFrame test, which was flaky at times.
Bug=27173,26549
Review URL: http://codereview.chromium.org/389029
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31915 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
| |
BUG=27414
TEST=None
Review URL: http://codereview.chromium.org/384094
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31852 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
implements the PluginRequestHandler
interface which is maintained by individual requests which can outlive the active document/activex instances.
I ran into a crash where UrlmonUrlRequest was calling into an invalid PluginRequestHandler pointer which
had been destroyed just before.
We also need to ensure that UrlmonUrlRequest and ChromeFrameActiveXBase select the multi threaded model as
AddRef/Release can be invoked from multiple threads.
I also removed the CleanupAsyncRequests function in ChromeFrameAutomationClient and moved all the code to CleanupRequests, which ensures that we treat synchronous
and asynchronous requests similarly.
There are instances where an automation client instance is created and destroyed without being initialized which causes a spurious assert to fire in the Uninitialize function. I added a check in the Uninitialize function to return if the state is uninitialized.
Bug=none
Review URL: http://codereview.chromium.org/386014
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31792 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
HTTP sites. This was because
the automation resource message filter tracked HTTP requests based on the request ids which are generated
by the renderer process. As a result a new request would get created say with id 0, while an existing request
would end in ChromeFrame causing the new request to incorrectly shutdown.
Fix is to revert back to the original way of tracking requests with an auto incrementing id. The automation url
job maintains both ids now, i.e. the automation request id and the chrome request id. The download notification
receives the automation id and basically looks up the associated automation request id and sends the notification
back to ChromeFrame.
This fixes bug http://code.google.com/p/chromium/issues/detail?id=27401
Other fixes in this CL include the following:-
1. The active document instance would never get destroyed. This was because we call ShowUI on the doc host
which maintains a reference. We need to call HideUI in Setsite of NULL, which releases the reference.
2. When the active x instance is shutting down we try to shutdown all running requests in the OnDestroy handler.
To ensure that the request is deleted from the request map and released in the same thread which created it
we post a task back to the ui thread which never runs as the window is being destroyed. Fix is to create
a message only window with every urlmonrequest instance which supports task marshaling.
Tests in a future CL.
Bug=27401
Review URL: http://codereview.chromium.org/386008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31731 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
is already registered as an NPAPI plugin, keep that registration information up to date across updates.
Review URL: http://codereview.chromium.org/385015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31697 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. http://code.google.com/p/chromium/issues/detail?id=27200
This was a crash which would occur in the Stop function in the UrlmonUrlRequest object
which would get invoked when the active document instance was being destroyed. The crash
occured if the active document instance was reused in which case we end up reusing the
automation client instance. The fix is to ensure that we clean up existing requests from
the map before reusing the automation client instance.
2. http://code.google.com/p/chromium/issues/detail?id=27202
This was a DCHECK which would occur when adding a new request to the request map, which
indicated that an existing request with the same request id existed in the map. This would
occur during a redirect where the request id is reused by Chrome. Fix is to remove the
request from the map when we handle the AutomationMsg_RequestEnd message in the UI thread
itself. The UrlmonUrlRequest functions which attempt to remove the request from the map
now check if the request is valid before doing this.
Bug=27200,27202
Review URL: http://codereview.chromium.org/388008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31681 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
| |
change (not calling SetEnableExtensionAutomation on startup unless some
functions are being automated) that missed this outstanding issue.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/380009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31557 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* provide a new 'overlay' prompt mode that includes a "close" button with a cookie that respects the user preference for any originating site
* handle requesting the install UI from a host page loaded from a file:// URL
* expands UA detection to stop taunting Win2K (and below) users with visions of WebKit goodness
* preserves full compat with previous version
BUG=23057,22738,23132
TEST=see new test files in this change or build chrome_frame_tests and run with: chrome_frame_tests.exe --gtest_filter=*CFInstall*
Review URL: http://codereview.chromium.org/345032
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31539 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move GetSystemCommitCharge() into bsae\process_util*.
Kill PrintChromeMemoryUsageInfo(), which was only used by
reliability_tests.exe on Windows and whose stats are obsolete.
Delete the now-unnecessary chrome\test\perf\mem_usage* files.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/371025
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31423 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
flexible testing when you want to automate different sets of functions
in different tests. Now instead of needing to destroy your CF and
then create a new one with a different automation functions attribute,
you can just call the function to reset on the existing one, then call
it again to enable a different set.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/375014
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31406 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
tab for all extension views. Previously, API routing to the
automation client would only work for extension views that were
contained in the particular ExternalTab instance being automated. This
meant you couldn't test API calls from e.g. background pages.
Also using async functions instead of the previous RVH-based hack.
Updating one of the UI tests to make the API calls from a background
page, to provide an end-to-end test of the new routing.
This makes AutomationProvider::SetEnableAutomationExtension
Windows-only, but it effectively always was since it was already
dependent on ExternalTabContainer (indirectly, to provide a non-empty
implementation of TabContentsDelegate::ForwardMessageToExternalHost).
BUG=none
TEST=ui_tests.exe, chrome_frame_tests.exe, chrome_frame_unittests.exe
Review URL: http://codereview.chromium.org/366025
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31403 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
| |
suspect splitting utf_string_conversions out of string_utils on the Chrome side helped here.
If I don't eliminate these, I need to patch them for bug 4010, but I'm not going to do that if they aren't needed.
BUG=4010
TEST=none
Review URL: http://codereview.chromium.org/371039
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31343 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
| |
Use a test-specific subclass to isolate the stopgap use of 'ps'
to collect memory stats on Mac.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/342070
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31144 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
chrome.dll. This reworks the browser distribution code to use the ChromeFrameBrowserDistribution iff --chrome-frame is present on the command line.
Also,
* At startup, chrome.exe now uses the BrowserDistribution code to determine where the Chromium version key resides (instead of hard coding it).
* The installer now propagates the presence of --verbose-logging to uninstalls.
* The chrome_launcher now allows the --chrome-frame switch through to chrome.
* The installer now accepts a --chrome-frame switch.
* Remove almost all occurences of the CHROME_FRAME_BUILD define from the installer.
BUG=26012, 26603
TEST=Chrome Frame still builds and runs correctly. Chrome Frame builds built without 'branding'='Chrome' now install correctly.
Review URL: http://codereview.chromium.org/345021
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31015 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
| |
TEST=None
BUG=26549
TBR=ananta
Review URL: http://codereview.chromium.org/348051
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30783 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
issue where a page that uses CF would be loaded in an IFRAME on Google Images.Instead of attempting to load CF (not supported), we now defer to the host browser. Previously a blank page was displayed.TEST=Run new unit tests: FullTabModeIE_SubIFrame and FullTabModeIE_SubFrameBUG=22989
Review URL: http://codereview.chromium.org/343086
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30782 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
TEST=none
BUG=none
Review URL: http://codereview.chromium.org/354012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30756 0039d316-1c4b-4281-b951-d872f2087c98
|