summaryrefslogtreecommitdiffstats
path: root/gpu
Commit message (Collapse)AuthorAgeFilesLines
* Add gpu/OWNERSthakis@chromium.org2011-07-031-0/+3
| | | | | | | | | | BUG=88315 TEST=none Review URL: http://codereview.chromium.org/7304017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@91435 0039d316-1c4b-4281-b951-d872f2087c98
* GCC 4.6 -Wunused-but-set-variable cleanup.pph34r@gmail.com2011-07-013-4/+4
| | | | | | | | | | BUG=87490 TEST=None Review URL: http://codereview.chromium.org/7264013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@91314 0039d316-1c4b-4281-b951-d872f2087c98
* Remove app from a bunch of DEPS files.tfarina@chromium.org2011-06-301-3/+0
| | | | | | | | | | | BUG=72317 TEST=None R=rsesek@chromium.org Review URL: http://codereview.chromium.org/7218065 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@91179 0039d316-1c4b-4281-b951-d872f2087c98
* Remove the dependency on app_base from some targets.tfarina@chromium.org2011-06-291-1/+0
| | | | | | | | | | | BUG=72317 TEST=None R=rsesek@chromium.org Review URL: http://codereview.chromium.org/7283024 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@91045 0039d316-1c4b-4281-b951-d872f2087c98
* Re-Fixes Texture::Copygman@chromium.org2011-06-291-12/+11
| | | | | | | | | | | | | | | | | | | | | | The issue is Texture::Copy is being called without calling the required Texture::AllocateStorage. This happens to work because glCopyTexImage2D also allocates storage. Al would know the correct way to fix this so Texture::AllocateStorage is always called but he's in the process of ripping out all this code so this CL just makes it work as is (which is what it was doing before except now it has the correct format) https://bugs.webkit.org/show_bug.cgi?id=63638 https://bugs.webkit.org/show_bug.cgi?id=63643 TEST=ran DRT with layout tests mentioned in bugs BUG=none (see above) Review URL: http://codereview.chromium.org/7218056 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@91043 0039d316-1c4b-4281-b951-d872f2087c98
* Implement proper synchronization between HW video decode IPC and CommandBuffer.fischman@chromium.org2011-06-295-0/+67
| | | | | | | | | | | | | | | | | This is done by inserting tokens into the command-buffer stream when synchronization is needed, and adding a last-read/last-written token pair to each IPC message. This allowed me to remove the bogus FinishGL() calls from the gles2 sample pepper plugin. As part of this CL, the return value for VideoDecodeAccelerator::{Decode,Flush,Abort} changed from bool to void. These are all async methods so errors ought to be signaled using callbacks. BUG=none TEST=gles2 works, no crashes; trybots Review URL: http://codereview.chromium.org/7260008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90971 0039d316-1c4b-4281-b951-d872f2087c98
* Make swapbuffers copy use the correct format.gman@chromium.org2011-06-281-2/+5
| | | | | | | | | | TEST=none BUG=82420 Review URL: http://codereview.chromium.org/7273047 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90861 0039d316-1c4b-4281-b951-d872f2087c98
* Return error after allocating GL resource.gman@chromium.org2011-06-285-27/+237
| | | | | | | | | | | | | We were checking for errors but not reporting them to the user. TEST=unit tests BUG=none R=apatrick@chromium.org Review URL: http://codereview.chromium.org/7272010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90856 0039d316-1c4b-4281-b951-d872f2087c98
* Revert "Revert "Add glGetMultipleIntegervCHROMIUM""gman@chromium.org2011-06-2820-14/+553
| | | | | | | | | | This reverts commit 99036c9a95bcb595cd87b2dabcc633a5d3ff7ccc. TEST=none BUG=85969 TBR=apatrick@chromium.org git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90775 0039d316-1c4b-4281-b951-d872f2087c98
* Revert "Add glGetMultipleIntegervCHROMIUM"gman@chromium.org2011-06-2720-553/+14
| | | | | | | | | | | | This reverts commit ffddfc7f07bad6c52b69dae8e4911b4eb3b89275. TEST=none BUG=85969 TBR=gman@chromium.org TBR= git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90665 0039d316-1c4b-4281-b951-d872f2087c98
* Add glGetMultipleIntegervCHROMIUMgman@chromium.org2011-06-2720-14/+553
| | | | | | | | | | | | | This is a step to adding more client side state caching. TEST=unit tests BUG=85969 R=apatrick@chromium.org Review URL: http://codereview.chromium.org/7217029 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90662 0039d316-1c4b-4281-b951-d872f2087c98
* DCHECK glDeleteXXX with id = 0 as this is a bug in client code.gman@chromium.org2011-06-276-70/+103
| | | | | | | | | | | This is only enabled for Chrome code as it's not standard OpenGL. TEST=ran layout tests BUG=85268 Review URL: http://codereview.chromium.org/7206031 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90612 0039d316-1c4b-4281-b951-d872f2087c98
* Reland "EGLImage transport for TOUCH_UI".backer@chromium.org2011-06-255-16/+131
| | | | | | | | | | The issue with r90511 was that we need EGL header files for touchui=1 builds. The solution was to pull them in from third_party/angle for touchui=1 only. BUG=none TEST=by hand on Linux (w/ and w/o TOUCH_UI), Windows, and Mac TBR=sky@chromium.org,apatrick@chromium.org git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90513 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 90511 - Use pixmaps and EGLImages to transport image data between GPU ↵backer@chromium.org2011-06-254-126/+16
| | | | | | | | | | | | | | | | process and browser. Behind a compile TOUCH_UI flag. It uses the MAC OSX AcceleratedSurface IPCs to communicate between the GPU process and browser. The major difference between the OSX display path is that I send an ACK back after AcceleratedSurfaceSetIOSurface because the process of binding a texture to the pixmap may destroy the contents of the pixmap. BUG=none TEST=by hand on Linux (w/ and w/o TOUCH_UI), Windows, and Mac Review URL: http://codereview.chromium.org/6987014 TBR=backer@chromium.org Review URL: http://codereview.chromium.org/7261016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90512 0039d316-1c4b-4281-b951-d872f2087c98
* Use pixmaps and EGLImages to transport image data between GPU process and ↵backer@chromium.org2011-06-254-16/+126
| | | | | | | | | | | | | browser. Behind a compile TOUCH_UI flag. It uses the MAC OSX AcceleratedSurface IPCs to communicate between the GPU process and browser. The major difference between the OSX display path is that I send an ACK back after AcceleratedSurfaceSetIOSurface because the process of binding a texture to the pixmap may destroy the contents of the pixmap. BUG=none TEST=by hand on Linux (w/ and w/o TOUCH_UI), Windows, and Mac Review URL: http://codereview.chromium.org/6987014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90511 0039d316-1c4b-4281-b951-d872f2087c98
* Add more trace events related to latch usage and to track RendererGlContext ↵jbates@chromium.org2011-06-221-2/+2
| | | | | | | | destruction. Review URL: http://codereview.chromium.org/7237005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90131 0039d316-1c4b-4281-b951-d872f2087c98
* Convert most remaining resources to use the API/thunk system. The significantbrettw@chromium.org2011-06-221-17/+32
| | | | | | | | | | | | | | | changes here are around the 3D API. Having separate files for the texture mapping interface is no longer necessary for the proxy and the implementation. This also removes the uses of the "old" dynamic casting system (using "GetAs") for other resources that I could find. TEST=ui tests BUG=none Review URL: http://codereview.chromium.org/7206016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90096 0039d316-1c4b-4281-b951-d872f2087c98
* Coverity: Pass by reference in CommandBufferHelper::SynchronizeState.thestig@chromium.org2011-06-222-2/+2
| | | | | | | | | | BUG=none TEST=none CID=8387 Review URL: http://codereview.chromium.org/7216035 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89981 0039d316-1c4b-4281-b951-d872f2087c98
* Reapply Enforce-RGB patch with bugs fixedgman@chromium.org2011-06-2014-162/+1482
| | | | | | | | TEST=ran layout tests BUG=85385 TBR=apatrick@chromium.org git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89751 0039d316-1c4b-4281-b951-d872f2087c98
* RendererGLContext supports reparenting a GL context.apatrick@chromium.org2011-06-2012-98/+67
| | | | | | | | | | | | This will allow the parenting of offscreen canvas contexts to be deferred until the compositor's view context exists, which in some cases needs to be deferred until the window is asynchronously created by the browser's UI thread. An example is JavaScript opening a popup window and then immediately using canvas to attempt to render to it. This patch alone does not fix the bug. BUG=80703 Review URL: http://codereview.chromium.org/7205012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89715 0039d316-1c4b-4281-b951-d872f2087c98
* Automatically put all GL contexts associated with a particular GPU channel ↵apatrick@chromium.org2011-06-167-31/+26
| | | | | | | | | | | | | (and renderer process) in the same share group. This is work towards allowing offscreen canvas contexts to be allocated before compositor view contexts are created. This is a problem because a canvas might be created before the window it will be displayed in exists. This does not fix the bug on its own. BUG=80703 Review URL: http://codereview.chromium.org/7104148 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89395 0039d316-1c4b-4281-b951-d872f2087c98
* Release current context before destroying, so that it properly releases its ↵piman@google.com2011-06-161-1/+3
| | | | | | | | | | | resources BUG=chromium-os:85082 TEST=see bug Review URL: http://codereview.chromium.org/7182003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89392 0039d316-1c4b-4281-b951-d872f2087c98
* Uninitialized member in RingBufferWrapper.finnur@chromium.org2011-06-161-1/+0
| | | | | | | | | BUG=None TEST=None CID=8592 Review URL: http://codereview.chromium.org/6995133 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89347 0039d316-1c4b-4281-b951-d872f2087c98
* Cleanup: base/scoped_ptr.h -> base/memory/scoped_ptr.h. (part 2)thestig@chromium.org2011-06-151-4/+4
| | | | | | | | BUG=none TEST=none Review URL: http://codereview.chromium.org/7149008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89131 0039d316-1c4b-4281-b951-d872f2087c98
* Fix loading a component buildsadrul@chromium.org2011-06-151-0/+1
| | | | | | | | | | | | The error message: symbol lookup error: libwebkit.so: undefined symbol: _ZN8switches23kEnableGPUClientLoggingE BUG=none TEST=chrome built with component=shared_library starts up OK Review URL: http://codereview.chromium.org/7168005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89116 0039d316-1c4b-4281-b951-d872f2087c98
* Fix Revert of 89054 so it builds on win_sharedgman@chromium.org2011-06-1414-341/+1940
| | | | | | | | | TEST=builds on win_shared BUG=none Review URL: http://codereview.chromium.org/7167001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89096 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 89054 - Add lots of client side OpenGL logging.asargent@chromium.org2011-06-1413-1939/+341
| | | | | | | | | | | | | | TEST=ran chrome, ran OpenGL ES 2.0 conformance tests BUG=none R=apatrick@chromium.org Review URL: http://codereview.chromium.org/7003103 TBR=gman@chromium.org Review URL: http://codereview.chromium.org/7150022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89067 0039d316-1c4b-4281-b951-d872f2087c98
* Add lots of client side OpenGL logging.gman@chromium.org2011-06-1413-341/+1939
| | | | | | | | | | | TEST=ran chrome, ran OpenGL ES 2.0 conformance tests BUG=none R=apatrick@chromium.org Review URL: http://codereview.chromium.org/7003103 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89054 0039d316-1c4b-4281-b951-d872f2087c98
* Add tracing for various functions significant in compositor startupjamesr@chromium.org2011-06-142-0/+4
| | | | | | | | | | BUG=85961 TEST=none Review URL: http://codereview.chromium.org/7149012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89048 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 89002 - Enforce RGB even on buggy drivers.asargent@chromium.org2011-06-1412-839/+125
| | | | | | | | | | | | | | | | | | | | | | | | | | | Also STENCIL and DEPTH. This might not be a complete solution. It assumes that if we ask for an RGB backbuffer or renderbuffer and the driver gives us RGBA that we can still clear that RGBA to 1,1,1,1. After that it sets the masks so that alpha can never be rendered to. Similarly for DEPTH and STENCILS. It's possible we should just always ask for RGBA, at least for Renderbuffers. TEST=unit tests, ran OpenGL ES 2.0 conformance test and WebGL conformance tests. BUG=85385 R=apatrick@chromium.org Review URL: http://codereview.chromium.org/7099007 TBR=gman@chromium.org Review URL: http://codereview.chromium.org/7158002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89014 0039d316-1c4b-4281-b951-d872f2087c98
* Hook up with Angle shader translator backend.zmo@google.com2011-06-141-18/+11
| | | | | | | | | | Using the newly implemented Angle shader translator backend selection. Before, we ignore the translated text if we run on top of Angle due to the lack of a GLSL ES backend. Now we output GLSL ES source code and feed it to Angle instead of the original source code. This allows us to perform processing during translation, for example, long variable name mapping. BUG=84753 TEST=conformance/glsl-conformance.html passes on Windows/Angle Review URL: http://codereview.chromium.org/7108049 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89003 0039d316-1c4b-4281-b951-d872f2087c98
* Enforce RGB even on buggy drivers.gman@chromium.org2011-06-1412-125/+839
| | | | | | | | | | | | | | | | | | | | | | | | Also STENCIL and DEPTH. This might not be a complete solution. It assumes that if we ask for an RGB backbuffer or renderbuffer and the driver gives us RGBA that we can still clear that RGBA to 1,1,1,1. After that it sets the masks so that alpha can never be rendered to. Similarly for DEPTH and STENCILS. It's possible we should just always ask for RGBA, at least for Renderbuffers. TEST=unit tests, ran OpenGL ES 2.0 conformance test and WebGL conformance tests. BUG=85385 R=apatrick@chromium.org Review URL: http://codereview.chromium.org/7099007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89002 0039d316-1c4b-4281-b951-d872f2087c98
* Previously, the DisplayLink would never start until a software draw was done ↵jbates@chromium.org2011-06-131-4/+6
| | | | | | | | | | | | | | | | | at least once. With force-compositing-mode, the software draw was never done, causing tabs to lockup indefinitely waiting for the swap acknowledgement. This fix ensures that the DisplayLink is running immediately. The Cocoa setUpGState callback was required to avoid "invalid drawable" errors when setView was called on the NSOpenGLContext. Another deadlock cause could be the GpuChannel route getting removed while the renderer is blocked on a FlushSync. For this, a method has been added to GpuCommandBufferStub to unblock/cleanup that is called from GpuChannel before the IPC route is removed. Trace events have been added in places that will help debug related issues in the future. BUG=84343 TEST=launch with --force-compositing-mode; open about:flags; in the same tab, open ycombinator.com and it should not hang. Review URL: http://codereview.chromium.org/6993043 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@88877 0039d316-1c4b-4281-b951-d872f2087c98
* Resubmit http://codereview.chromium.org/7046057gman@chromium.org2011-06-093-1/+101
| | | | | | | | | | | | that was reverted http://codereview.chromium.org/6995100/ TEST=unit tests BUG=85046 TBR=apatrick@chromium.org Review URL: http://codereview.chromium.org/6995114 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@88584 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 88452 (broke gpu_unittests) - Fix LUMANINCE_ALPHA issuersleevi@chromium.org2011-06-093-101/+1
| | | | | | | | | | | | TEST=unit tests BUG=85046 Review URL: http://codereview.chromium.org/7046057 TBR=gman@chromium.org Review URL: http://codereview.chromium.org/6995100 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@88457 0039d316-1c4b-4281-b951-d872f2087c98
* Fix LUMANINCE_ALPHA issuegman@chromium.org2011-06-093-1/+101
| | | | | | | | | TEST=unit tests BUG=85046 Review URL: http://codereview.chromium.org/7046057 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@88452 0039d316-1c4b-4281-b951-d872f2087c98
* Plumbing: Cache the resize callback so that we can call it later.backer@chromium.org2011-06-082-1/+15
| | | | | | | | | | | I am working towards having two surfaces that the GpuScheduler alternates between on SwapBuffers. Each surface should be resized once it is the backbuffer (via SwapBuffers). By caching the resize callback, I can (a) resize of the backbuffer immediately when the callback is initiated from the GLES2Decoder and (b) resize the frontbuffer once it becomes the backbuffer after a SwapBuffers. BUG=none TEST=none (should be no-op on all platforms) Review URL: http://codereview.chromium.org/6982060 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@88327 0039d316-1c4b-4281-b951-d872f2087c98
* Added stddef.h to cmd_buffer_common.h to build with gcc-4.6.0.asharif@chromium.org2011-06-071-0/+1
| | | | | | Review URL: http://codereview.chromium.org/7118001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@88173 0039d316-1c4b-4281-b951-d872f2087c98
* Send message to renderer on command buffer errorjbauman@chromium.org2011-06-072-0/+9
| | | | | | | | | | | If there's a command buffer error, no more swap buffers callbacks will be sent, which could cause the renderer to hang forever. Prevent that by sending a message to the renderer, which will invoke the lost context callback. BUG= TEST= Review URL: http://codereview.chromium.org/7024011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@88097 0039d316-1c4b-4281-b951-d872f2087c98
* Optimize TexSubImage2D and BufferSubDatagman@chromium.org2011-06-076-39/+123
| | | | | | | | | | | | | They now call TexImage2D and BufferData if possible. TEST=some unit test, ran conformance tests BUG=84977 R=apatrick@chromium.org Review URL: http://codereview.chromium.org/6993049 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@88078 0039d316-1c4b-4281-b951-d872f2087c98
* Optimize TexImage2D.gman@chromium.org2011-06-071-5/+20
| | | | | | | | | | | TEST=none BUG=none R=apatrick@chromium.org Review URL: http://codereview.chromium.org/7111024 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@88077 0039d316-1c4b-4281-b951-d872f2087c98
* Optimize BufferDatagman@chromium.org2011-06-071-6/+17
| | | | | | | | | | | TEST=none BUG=none R=apatrick@chromium.org Review URL: http://codereview.chromium.org/7111025 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@88076 0039d316-1c4b-4281-b951-d872f2087c98
* IWYU: Add missing header. Under GCC 4.6, this is a hard error now.rsleevi@chromium.org2011-06-071-1/+2
| | | | | | | | | | BUG=80071 TEST=none Review URL: http://codereview.chromium.org/7112027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@88064 0039d316-1c4b-4281-b951-d872f2087c98
* Remove debug assertions for redundant FreeID calls.husky@google.com2011-06-062-4/+19
| | | | | | | | The GLES conformance tests use double frees. Checking the specs, redundant free calls should be silently ignored. Review URL: http://codereview.chromium.org/7056067 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@87995 0039d316-1c4b-4281-b951-d872f2087c98
* Hook up shader long variable name mapping with GPU command buffer port.zmo@google.com2011-06-047-35/+55
| | | | | | | | | | shader long variable name mapping is implemented in Angle shader translator. We should hook up the feature with GPU command buffer so long names won't cause shader compile/link failure or crashes. BUG=84753 TEST=tree green, webgl's conformance/glsl-conformance.html and conformance/glsl-long-variable-names pass on all platforms (Mac/Win/Linux), gles2 conformance test suites run ok. Review URL: http://codereview.chromium.org/6969100 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@87899 0039d316-1c4b-4281-b951-d872f2087c98
* GpuScheduler fix:jbates@chromium.org2011-06-035-28/+87
| | | | | | | | | | | - Ganesh generates a lot of cheap GL commands, so 100 commands were executing in 50us, causing us to spin on PostTask(ProcessCommands) 60+ times per frame. This change simply tracks the elapsed time after each 100 commands - if the time is less than 2ms, it continues on to the next 100 commands. BUG=83628 TEST=trace FishIE demo with 500 fish, check that ProcessCommands is not called ~60 times per frame. Review URL: http://codereview.chromium.org/6993032 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@87895 0039d316-1c4b-4281-b951-d872f2087c98
* Remove canvas throttling in GLES2Implementation::CopyTextureToParentTexture.jbates@chromium.org2011-06-031-7/+0
| | | | | | | | | BUG=83628 TEST=run FishIE demo, verify that FlushSync is not called multiple times every frame during DoDeferredUpdate Review URL: http://codereview.chromium.org/7024028 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@87876 0039d316-1c4b-4281-b951-d872f2087c98
* More POSIX support for Chromium, consisting mostly of broadening ifdefs. Thistony@chromium.org2011-06-025-13/+13
| | | | | | | | | | | | | | patch cuts across modules, as there's only a handful necessary for each, with the most in chrome/test/. ALSA is enabled on FreeBSD and Solaris, as libasound has been ported to those two platforms, and I moved resolv.h in host_resolver_proc.cc, because it depends on headers from sys_addrinfo.h on FreeBSD. Patch by ruben (chromium@hybridsource.org) Review URL: http://codereview.chromium.org/6976055 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@87641 0039d316-1c4b-4281-b951-d872f2087c98
* Fix clang build failure introduced by r87408.apatrick@chromium.org2011-06-013-1/+20
| | | | | | Review URL: http://codereview.chromium.org/7027020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@87416 0039d316-1c4b-4281-b951-d872f2087c98
* Reland 87371 - Support for glSetSurfaceCHROMIUM.apatrick@chromium.org2011-06-0128-50/+275
| | | | | | | | This command allows a previously created GPU surface to be made current for a command buffer. There are no surfaces registered at this point so this command is currently a no-op. Review URL: http://codereview.chromium.org/7077001 Review URL: http://codereview.chromium.org/7006019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@87408 0039d316-1c4b-4281-b951-d872f2087c98