summaryrefslogtreecommitdiffstats
path: root/chrome/plugin/webplugin_proxy.cc
Commit message (Collapse)AuthorAgeFilesLines
* Implement NPAPI HTTP Redirect handling. This basically supports the NPAPI ↵ananta@chromium.org2010-11-231-1/+8
| | | | | | | | | | | | | | | | | | | URL redirect notifications which are sent out from the browser while processing URL requests issued by the plugin via the NPN_GetURLNotify and NPN_PostURLNotify APIs. For more info please see https://wiki.mozilla.org/NPAPI:HTTPRedirectHandling As part of this CL we also block cross origin 307 POST url redirects. Test=Covered by NPAPI UI test GetURLRedirectNotification Bug=63030,63698 Review URL: http://codereview.chromium.org/5228007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@67029 0039d316-1c4b-4281-b951-d872f2087c98
* Let every "accelerated IO surface swapped" message have an identifier of the ↵thakis@chromium.org2010-10-281-2/+3
| | | | | | | | | | | | | | | surface. Currently, this is only used to DCHECK a currently implicit invariant, but I want to use this to let every surface container only remember its last painted-to surface, and not its last created surface. No behavior change. BUG=53165 TEST=none Review URL: http://codereview.chromium.org/4142004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@64317 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 63232 - On Windows, create a new TransportDIB::Handle struct which ↵kkania@chromium.org2010-10-201-40/+71
| | | | | | | | | | | | | | | | | | | | | | | | | includes the file mapping HANDLE and the source process ID. Duplicating the handle for the remote process is done in TransportDIB::Map, instead of in various #ifdefs scattered across the code. Also on windows, remove the struct for the TransportDIB::Id which contained both the sequence number and the HANDLE and replace it with just the sequence number. Fix ThumbnailGenerator by mapping the TransportDIB on Windows and adding a method to duplicate the file mapping handle before sending across the channel. Also, add a ScopedHandle and fix some handle leaks. BUG=none TEST=none Review URL: http://codereview.chromium.org/3834003 TBR=kkania@chromium.org Review URL: http://codereview.chromium.org/3943002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63246 0039d316-1c4b-4281-b951-d872f2087c98
* On Windows, create a new TransportDIB::Handle struct which includes the filekkania@chromium.org2010-10-201-71/+40
| | | | | | | | | | | | | | | | | | | | mapping HANDLE and the source process ID. Duplicating the handle for the remote process is done in TransportDIB::Map, instead of in various #ifdefs scattered across the code. Also on windows, remove the struct for the TransportDIB::Id which contained both the sequence number and the HANDLE and replace it with just the sequence number. Fix ThumbnailGenerator by mapping the TransportDIB on Windows and adding a method to duplicate the file mapping handle before sending across the channel. Also, add a ScopedHandle and fix some handle leaks. BUG=none TEST=none Review URL: http://codereview.chromium.org/3834003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63232 0039d316-1c4b-4281-b951-d872f2087c98
* Move scoped_cftyperef from base to base/mac, use the new namespace, and name itbrettw@chromium.org2010-10-171-3/+5
| | | | | | | | | | properly (scoped_cftyperef -> ScopedCFTypeRef). TEST=it compiles BUG=none Review URL: http://codereview.chromium.org/3855001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62887 0039d316-1c4b-4281-b951-d872f2087c98
* Implement IME for Mac plugins using the Cocoa event model on 10.6stuartmorgan@chromium.org2010-10-151-0/+8
| | | | | | | | | | | | | Based on the implementation of Gecko's Cocoa event model IME handling on 64-bit, but modified to fit Chrome's cross-process event handling. Because NSTextInputContext is 10.6+, 10.5 will need a cempletely different implementation. BUG=30905 TEST=Plugins implementing the updated NPAPI Cocoa IME spec should handle IME on 10.6. Review URL: http://codereview.chromium.org/3808001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62820 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 61608 - On Windows, create a new TransportDIB::Handle struct which ↵satish@chromium.org2010-10-061-37/+71
| | | | | | | | | | | | | | | | | | | | | | | includes the file mapping HANDLE and the source process ID. Duplicating the handle for the remote process is done in TransportDIB::Map, instead of in various #ifdefs scattered across the code. Also on windows, remove the struct for the TransportDIB::Id which contained both the sequence number and the HANDLE and replace it with just the sequence number. Fix ThumbnailGenerator by mapping the TransportDIB on Windows and adding a method to duplicate the file mapping handle before sending across the channel. BUG=none TEST=none Review URL: http://codereview.chromium.org/3305020 BUG=58128 TBR=kkania@chromium.org Review URL: http://codereview.chromium.org/3596008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61624 0039d316-1c4b-4281-b951-d872f2087c98
* On Windows, create a new TransportDIB::Handle struct which includes the filekkania@chromium.org2010-10-061-71/+37
| | | | | | | | | | | | | | | | | mapping HANDLE and the source process ID. Duplicating the handle for the remote process is done in TransportDIB::Map, instead of in various #ifdefs scattered across the code. Also on windows, remove the struct for the TransportDIB::Id which contained both the sequence number and the HANDLE and replace it with just the sequence number. Fix ThumbnailGenerator by mapping the TransportDIB on Windows and adding a method to duplicate the file mapping handle before sending across the channel. BUG=none TEST=none Review URL: http://codereview.chromium.org/3305020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61608 0039d316-1c4b-4281-b951-d872f2087c98
* Enable the invalidating Core Animation plugin drawing model on 10.5stuartmorgan@chromium.org2010-10-011-4/+40
| | | | | | | | | | | This also adds a layer of abstraction between the concept of the accelerated surface, and our cross-process implementation (which is something we needed to fix in general, but was necessary here to avoid bleeding TransportDIB references into code that's not supposed to know about process separation). There's no in-process implementation since we don't support in-process plugins on the Mac, but the abstraction is now there if we want to add one in the future. BUG=32012 TEST=Plugins using invalidating Core Animation model should run on 10.5 Review URL: http://codereview.chromium.org/3449023 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61199 0039d316-1c4b-4281-b951-d872f2087c98
* If SHM pixmaps support is available, for example, Intel drivers now support thatpiman@chromium.org2010-08-051-0/+49
| | | | | | | | | | | | | | | | | | (http://cgit.freedesktop.org/xorg/driver/xf86-video-intel/commit/?id=4b7142baa0b3bf6f38843d06aadc579d8624cefc), use SHM pixmaps support to accelerate windowless plugin painting. Modify WindowlessPaint to directly use Xlib interfaces for SHM pixmaps support, similarly to the way how backing_store_x handles different SHM support levels provided by X server. BUG=50912 TEST=Open the page "http://disney.go.com/official-sites/demi-lovato/albums" using Chromium browser, compare the CPU usage of browser and X server before and after the change, and confirm CPU usage is reduced with this change (for example, on an Atom N450 Netbook with MeeGo 1.0 and Chromium browser 6.0.417.0 there's >30% CPU usage reduction, especially X server CPU usage is reduced by half). Review URL: http://codereview.chromium.org/3052039 Patch from Yuqiang Xian <yuqiang.xian@intel.com>. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@55020 0039d316-1c4b-4281-b951-d872f2087c98
* Fix a bug in NPDrawingModelInvalidatingCoreAnimation, and make it more efficientstuartmorgan@chromium.org2010-06-031-3/+6
| | | | | | | | | | | | | Fixes a conditional mistake introduced with the new drawing model. Skips unnecessary work when a NPDrawingModelInvalidatingCoreAnimation plugin calls invalidate. Removes some obsolete comments (the renaming in question already happened) BUG=None TEST=Core Animation plugins still work Review URL: http://codereview.chromium.org/2578004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@48891 0039d316-1c4b-4281-b951-d872f2087c98
* Implement support for NPDrawingModelInvalidatingCoreAnimation in Mac pluginsstuartmorgan@chromium.org2010-06-031-0/+2
| | | | | | | | | BUG=38982 TEST=None (no plugins use it yet) Review URL: http://codereview.chromium.org/2561005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@48877 0039d316-1c4b-4281-b951-d872f2087c98
* Made Pepper 3D plugins' output opaque on Mac OS X by filling thekbr@google.com2010-04-151-2/+2
| | | | | | | | | | | | | plugin region's alpha channel with 1.0 and then overwriting just the color channels. Core Animation plugins, though they currently always overlay HTML output, remain translucent. BUG=41424 TEST=ran Pepper 3D sample and verified its background is opaque Review URL: http://codereview.chromium.org/1547034 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@44594 0039d316-1c4b-4281-b951-d872f2087c98
* Fix offscren invalidation in windowless pluginsstuartmorgan@chromium.org2010-04-141-3/+3
| | | | | | | | | | | | | Fixes two related issues: - An invalidate that was entirely off screen, but for a plugin that was partial on-screen, would not trigger a paint when the damaged area was scrolled back into view (all platforms). - When a Mac plugin's container became visible, damaged regions were not repainted (Mac only). BUG=41383 TEST=See bug. Review URL: http://codereview.chromium.org/1629018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@44582 0039d316-1c4b-4281-b951-d872f2087c98
* Improve plugin performance on the Macstuartmorgan@chromium.org2010-04-141-2/+5
| | | | | | | | | | | | | | This makes a few changes: - Switch to memcpy instead of CG drawing to copy pixels from the transport bitmap to the backing bitmap (this is a substantial perf win). - Send transparancy information to the WebPluginDelegate, since it's no longer equivalent to not having a background DIB on the Mac (and likely on the other platforms in the future). - Don't clear the transport DIB for non-transparent plugins, since they will be drawing over whatever is there anyway. BUG=41340 TEST=Both transparent and non-transparent plugins should continue to draw correctly. Framerates for large CG plugins (e.g., in-window Netflix streaming) should be higher. Review URL: http://codereview.chromium.org/1629017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@44490 0039d316-1c4b-4281-b951-d872f2087c98
* Remove the use of the background transport for transparent Mac plugins.stuartmorgan@chromium.org2010-04-121-5/+3
| | | | | | | | | | | Since CG preserves alpha, and plugins don't composite onto pages manually, we don't need the extra buffer on the Mac. BUG=41194 TEST=Transparent plugins (mostly Flash) should continue to work normally. Review URL: http://codereview.chromium.org/1549035 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@44265 0039d316-1c4b-4281-b951-d872f2087c98
* Move app/gfx/canvas and app/gfx/font to gfx/.ben@chromium.org2010-03-231-1/+1
| | | | | | | | | | TBR=darin BUG=none TEST=none Review URL: http://codereview.chromium.org/1132006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@42312 0039d316-1c4b-4281-b951-d872f2087c98
* Move more files to toplevel gfx.ben@chromium.org2010-03-191-1/+3
| | | | | | | | | TBR=darin BUG=none TEST=none git-svn-id: svn://svn.chromium.org/chrome/trunk/src@42071 0039d316-1c4b-4281-b951-d872f2087c98
* Move some more files to toplevel gfx dir.ben@chromium.org2010-03-171-1/+1
| | | | | | | | | TBR=darin BUG=none TEST=none git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41812 0039d316-1c4b-4281-b951-d872f2087c98
* Rename uses of GPUPlugin in class names and IPC to AcceleratedSurface.pinkerton@chromium.org2010-03-121-4/+3
| | | | | | | | BUG=none TEST=Purely cleanup, no functional changes. Review URL: http://codereview.chromium.org/855003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41435 0039d316-1c4b-4281-b951-d872f2087c98
* Implement the CoreAnimation drawing model for plug-ins, sharing IPC and some ↵pinkerton@chromium.org2010-03-101-0/+22
| | | | | | | | | rendering code with the GPU Plug-in. The drawing model negotiation is currently disabled so this should have no visible impact to plug-ins. BUG=32012 TEST=make sure the pepper GPU plug-ins still work. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41194 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 41158 - Implement the CoreAnimation drawing model for plugins, ↵pinkerton@chromium.org2010-03-101-22/+0
| | | | | | | | | | | | sharing IPC and some rendering code with the GPU Plugin. The drawing model negotiation is currently disabled so this should have no visible impact to plugins. BUG=32012 TEST=make sure the pepper GPU plugins still work. Review URL: http://codereview.chromium.org/673001 TBR=pinkerton@chromium.org git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41159 0039d316-1c4b-4281-b951-d872f2087c98
* Implement the CoreAnimation drawing model for plug-ins, sharing IPC and some ↵pinkerton@chromium.org2010-03-101-0/+22
| | | | | | | | | | rendering code with the GPU Plug-in. The drawing model negotiation is currently disabled so this should have no visible impact to plug-ins. BUG=32012 TEST=make sure the pepper GPU plug-ins still work. Review URL: http://codereview.chromium.org/673001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41158 0039d316-1c4b-4281-b951-d872f2087c98
* BSD ifdefs, etc. necessary for chrome/pvalchev@google.com2010-03-091-34/+34
| | | | | | Review URL: http://codereview.chromium.org/656009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41067 0039d316-1c4b-4281-b951-d872f2087c98
* Make plugin buffer changes robust against synchronous plugin call nestingstuartmorgan@chromium.org2010-03-061-23/+31
| | | | | | | | | | | | | Makes SetWindowlessBuffer take a rect argument so it doesn't depend on the delegate being updated, then makes UpdateGeometry call that first so that changes can't accidentally be handled in reverse order if calling into the plugin's SetWindow results in nesting. Also combines updating the plugin geometry and context on the Mac into one call, since we don't want the plugin to have mismatched context and size information. Unblacklists Move Networks player on the Mac since these changes fix its crash. BUG=28298 TEST=Open the Move Networks sample on the Mac, and resize it. It should play without crashing. Review URL: http://codereview.chromium.org/668186 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40841 0039d316-1c4b-4281-b951-d872f2087c98
* Mac Plugin context handling cleanupstuartmorgan@chromium.org2010-03-051-1/+9
| | | | | | | | | | | | | | | | Fixes a number of things about how the shared buffer context is handled for plugins on the Mac: - Explicitly send paint events to QuickDraw plugins. This was being done before only because of a missing break in a switch statement, but we do actually want to send them since that's the only way those plugins know when we have invalidated part of their content (e.g., on first paint, or because the window focus changed). Also moves the window-scraping to after the paint event, instead of before, so we get the latest bits (and moves that code to a new method for clarity). - Remove context save/restore from HandleInputEvent, since CoreGraphics plugins are not allowed to paint outside of handling a paint event. - Add safety checks to context save/restore in WindowlessPaint and WebPluginProxy's paint, to correctly handle resizes that happen during paint handling (using a new member variable that is independent of event model). Also renames cg_context_ for clarity. BUG=none TEST=QuickDraw plugins (e.g., QuickTime) should no longer have a flicker of painting artifacts when they are first drawn. Review URL: http://codereview.chromium.org/668113 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40739 0039d316-1c4b-4281-b951-d872f2087c98
* Fix formatting nits.wtc@chromium.org2010-02-271-1/+1
| | | | | | | | | R=eroman BUG=none TEST=No compilation errors. Review URL: http://codereview.chromium.org/660223 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40201 0039d316-1c4b-4281-b951-d872f2087c98
* Fix passing pointers between processes.jam@chromium.org2010-01-291-41/+18
| | | | | | | BUG=31880 Review URL: http://codereview.chromium.org/558036 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@37555 0039d316-1c4b-4281-b951-d872f2087c98
* The renderer and plugin processes can send over raw NPObjects valid in the ↵ananta@chromium.org2010-01-201-12/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | other side's address space. Basically the way this works is if an NPObject is marshaled over to the other side, an NPObjectStub is created in the caller address space and a NPObjectProxy is created on the other side. The NPObjectProxy is passed the raw NPObject pointer which is used as a cookie. If the original NPObject needs to be passed back we pass the underlying NPObject saved in the NPObjectProxy. The receiver does not validate whether this NPObject is valid before invoking on it. While this is mostly fine, in the case of a compromised renderer invalid addresses could be passed back to the plugin which would invoke on these addresses and crash. Fix is to never pass raw object pointers across and just pass the corresponding routing id of the NPObjectStub. The receiver validates this object by invoking a new method GetNPObjectListenerForRoute on the PluginChannelBase. This method returns the corresponding NPObject listener for the routing id. We then retrieve the underlying NPObject from the listener and use it. The map of NPObjectListeners which is maintained by PluginChannelBase has been changed to hold NPObjectBase pointers instead. NPObjectStub and NPObjectProxy implement the new NPObjectBase interface which provides methods to return the underlying NPObject and the IPC::Channel::Listener pointer. Fixes bug http://code.google.com/p/chromium/issues/detail?id=31880 I verified with the steps outlined in the bug that this fix does address the underlying crash. Bug=31880 Test=We need a framework to test PluginChannel and NPObjectProxy/Stub. Will add a test case for this once we have this in place. Review URL: http://codereview.chromium.org/548046 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@36618 0039d316-1c4b-4281-b951-d872f2087c98
* Send resource load notifications from plugins to devtools agent. This is a ↵yurys@chromium.org2009-12-031-2/+3
| | | | | | | | | | part of a fix which would allow to inspect plugin resources. BUG=2084 Review URL: http://codereview.chromium.org/435044 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33672 0039d316-1c4b-4281-b951-d872f2087c98
* Add acknowledgement messages for PluginMsg_UpdateGeometry. On the Mac, usemark@chromium.org2009-11-301-1/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | these acknowledgements to know when it's safe to dump old TransportDIBs in the renderer process. The Mac TransportDIB implementation uses base::SharedMemory, which cannot be disposed of if an in-flight UpdateGeometry message refers to the shared memory file descriptor. BUG=27510, 26754 TEST=1. From bug 25710: a. Visit http://www.dkmsoftware.com/Yubotu.htm b. Click "Play Now" c. Resize vigorously. Expect: no sad plug-in icon. 2. Test case from bug 26754 (affected machines only): a. Visit http://news.google.com/ b. Click the [+] to the left of a YouTube link. On affected machines, you'll get a sad plug-in icon. c. Click the [+] to the left of a different YouTube link. Expect: no crash. 3. Test case from bug 26754 comment 9 (affected machines only): a. Have lots of bookmarks (import Safari defaults) b. Right-click on bookmark bar, and choose "Open All Bookmarks" Expect: no crash. This change may not actually fix the third test case. Review URL: http://codereview.chromium.org/417005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33264 0039d316-1c4b-4281-b951-d872f2087c98
* Rename policy_url to first_party_for_cookies in cookie-related code.wtc@chromium.org2009-11-181-4/+6
| | | | | | | | | R=abarth BUG=25133 TEST=none. A cosmetic change. Review URL: http://codereview.chromium.org/403011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32373 0039d316-1c4b-4281-b951-d872f2087c98
* Duplicating the SetActiveURL() change from the renderer to the plugin ↵jschuh@chromium.org2009-11-141-1/+1
| | | | | | | | | | | process. (Should also fix a plugin callback that may be clearing the renderer's URL prematurely.) BUG=22033 TEST=None Review URL: http://codereview.chromium.org/384130 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31971 0039d316-1c4b-4281-b951-d872f2087c98
* Fixes almost all of the rest of lint errors in the chrome/ directory (minus ↵erg@google.com2009-11-131-1/+1
| | | | | | | | 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
* Upstreaming WebKit.gypyaar@chromium.org2009-11-121-1/+1
| | | | | | | | | | | | This mega patch contains a few simple but tightly dependent changes: 1. Deletion of webkit/api/WebKit.gyp. The file now lives in webkit.org. 2. Rename of webkit/webkit.gyp to webkit/webkit_glue.gyp. Having two webkit.gyp was a source of developer confusion. 3. Gyp dependencies are updated across chromium to point at the upstream WebKit.gyp and the renamed webkit_glue.gyp. 4. Some 200+ files include paths fixed to point to third_party/WebKit/WebKit/chromium instead of webkit/api. The later will be deleted in a subsequent patch. Review URL: http://codereview.chromium.org/387020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31749 0039d316-1c4b-4281-b951-d872f2087c98
* Fix partial updates of transparent plugin backgrounds on Macstuartmorgan@chromium.org2009-11-101-1/+4
| | | | | | | | | | | Applies the same flipping that fixed partial plugin drawing originally to backgrounds of transparent plugins, since it has the same relative flipping. BUG=25820 TEST=Visit a site with a transparent plugin (see bug for example) Review URL: http://codereview.chromium.org/372078 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31561 0039d316-1c4b-4281-b951-d872f2087c98
* Amit, please review everything.ananta@chromium.org2009-11-071-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | jam, please review changes to the plugin create channel IPCs. mpcomplete, please review changes to chrome_plugin_host.cc ChromeFrame needs to intercept URL requests issued directly by plugins like gears to ensure that they get routed through the host browser network stack. We decide whether or not a request is to be handled based on the renderer process id and the render view id (routing id), which get passed in the ViewHostMsg_RequestResource IPC. If this request is issued by Gears then the routing id comes in as MSG_ROUTING_NONE, which causes the request to go through the chrome network stack. Fix is to pass the host render view id to the plugin in the PluginMsg_Init IPC. The plugin already receives the renderer process id. Both these ids now come back in the ViewHostMsg_RequestResource IPC. This fixes an issue with wave when rendered in full tab mode in ChromeFrame, where dropping a file into a wave would cause the renderer to hang. Fixes bug http://code.google.com/p/chromium/issues/detail?id=23992 Bug=23992 Review URL: http://codereview.chromium.org/370007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31387 0039d316-1c4b-4281-b951-d872f2087c98
* Fix transparent windowless plugin background painting. This would manifestbrettw@chromium.org2009-10-291-17/+18
| | | | | | | | | | | | | | | | | | | | | | | | itself as incorrect ClearType edges. The problem was that we were taking into account the translation from the page coordinate system when blitting the background, but this had already been accounted for in the transformation matrix, resulting in duplicate transformations. The fix simplifies the code by not tranlating into the page coordinate system until later, staying in the plugin coordinate system which is more convenient. This means that the background (which is the same size as the buffer) can just be painted at (0,0) with no fuss and no muss. We don't even need to worry about how much we paint since the clip was already installed. This also corrects some indenting in browser.cc that I noticed. TEST="Attach a file" text in Gmail compose looks weird (sometimes requires selecting it to make this happen). BUG=26080 Review URL: http://codereview.chromium.org/343040 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30498 0039d316-1c4b-4281-b951-d872f2087c98
* Make the web plugin proxy tolerant of windowless bitmap memory mapping failures.brettw@chromium.org2009-10-271-13/+26
| | | | | | | | | | | | | These seem to be happening at a low frequency, and can be a result of being out of memory or using too many GDI resources (I think). By catching the error and clearing the canvas pointers, we won't crash and will just skip drawing the plugin. TEST=none BUG=25689 Review URL: http://codereview.chromium.org/332033 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30201 0039d316-1c4b-4281-b951-d872f2087c98
* Push the native canvas into the plugin implementation. On Windows, this meansbrettw@chromium.org2009-10-231-102/+50
| | | | | | | | | | | | | | | using SkCanvas instead of an HDC. This way, the pepper implementation can use the more advanced blending of SkCanvas and avoid the Windows API. I did some refactoring in the standard plugin implementation to support this and make it as clean as I could. Hopefully the code is slightly clearer than before. TEST=none BUG=none Review URL: http://codereview.chromium.org/306027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29897 0039d316-1c4b-4281-b951-d872f2087c98
* Move classes depending on Skia out of base/gfx and into app/gfx. Renamebrettw@chromium.org2009-10-071-5/+2
| | | | | | | | | | native_theme to native_theme_win since its Windows-specific. BUG=none TEST=none Review URL: http://codereview.chromium.org/259047 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@28300 0039d316-1c4b-4281-b951-d872f2087c98
* Get rid of the need for cross process events in order to get plugin ↵jam@chromium.org2009-09-291-36/+9
| | | | | | | | | | processes to run nested message loops when a dialog is shown. Instead use an async message that's broadcast from the renderer to all plugin processes that are connected to it, and which is dispatched on the plugin IO thread to set a process-local waitable event. This fixes showModalDialog on Linux/Mac. BUG=15891 TEST=covered by UI tests, undef's them for POSIX Review URL: http://codereview.chromium.org/242043 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27456 0039d316-1c4b-4281-b951-d872f2087c98
* Gears File Drag Dropmichaeln@google.com2009-09-161-3/+3
| | | | | | | | | | | | | | | | | r24899 now keys the child security policy database based on renderer id, rather than renderer process id. Update gears drag drop to use the renderer id for the file policy access checks. This is a clone for submission of of noel's original CL http://codereview.chromium.org/195079 BUG=7995 Review URL: http://codereview.chromium.org/196145 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@26397 0039d316-1c4b-4281-b951-d872f2087c98
* This changelist fixes some issues with the NPAPI WMP plugin work in Chrome. ↵jam@chromium.org2009-09-041-3/+1
| | | | | | | | | | | | The first is that we need to disable windowless mode since it doesn't work in the NPAPI plugin (Safari does this as well, and sites don't use windowless for Firefox). The second is to make UpdateGeometry message synchronous for WMP. The problem I saw was that while handling that message, the plugin might disaptch a NPObject Invoke method to play a video, which WMP doesn't expect and it leads to the video never playing. While touching these files, I made some small cleanup by reverting the change that made WebPluginProxy not have a WebPluginDelegateImpl pointer, which added a bunch of unnecessary methods to WebPluginDelegate. BUG=20259 TEST=use --no-activex and try playing the videos on http://www.nana10.co.il/Section/?SectionID=10847&sid=235 Review URL: http://codereview.chromium.org/196012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25433 0039d316-1c4b-4281-b951-d872f2087c98
* Adjust color spaces so that Mac Chrome renders colors properly.amanda@chromium.org2009-09-031-4/+5
| | | | | | | | | | | BUG=19951,20552 TEST=compare pages rendered in Chromium and Safari. They should appear the same. mark: review jrg/brettw: FYI Review URL: http://codereview.chromium.org/194013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25380 0039d316-1c4b-4281-b951-d872f2087c98
* Eliminate remaining WebCore dependencies from webplugin_impl.ccdarin@chromium.org2009-09-021-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Introduces WebPluginPageDelegate to hold the methods that only existed on WebViewDelegate to allow WebPluginImpl to talk to the RenderView. This enables us to eliminate those methods from WebViewDelegate, which eliminates the last dependency on gfx/ native_widget_types.h in our WebKit interface! WebViewDelegate grows a CreatePlugin method that returns a WebKit::WebPlugin. It loses its CreatePluginDelegate method, which now lives on WebPluginPageDelegate. This change makes RenderView use WeakPtr when it hands itself to each WebPluginDelegateProxy and WebPluginImpl instance. This makes the memory management simpler. This change also moves various WebPlugin* interfaces defined in webkit/glue into the webkit_glue namespace. This was to help reduce confusion with similarly named types in the WebKit namespace. WebKit::WebPluginParams is added to contain the set of parameters used to construct a plugin. WebPluginContainer gets a couple more methods to allow us to avoid WebCore dependencies in WebPluginImpl. R=jam BUG=10036 TEST=none Review URL: http://codereview.chromium.org/181014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25184 0039d316-1c4b-4281-b951-d872f2087c98
* Fix invalidates from off-screen plugins on the Mac.stuartmorgan@chromium.org2009-08-271-2/+12
| | | | | | | | | BUG=20234 TEST=Flash plugins that start offscreen should look correct when scrolled into view. Review URL: http://codereview.chromium.org/173552 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@24621 0039d316-1c4b-4281-b951-d872f2087c98
* linux: new socket/plug code for windowed pluginspiman@chromium.org2009-08-251-51/+1
| | | | | | | | | | | | | | | | | | | | | | | | This CL reworks the GtkSocket/GtkPlug code for windowed plugins on linux. Instead of having the plugin ask the browser to create a socket to plug into, it simply creates a plug and sends it to the browser. The browser creates a socket and attaches the plug when the socket becomes realized This fixes 2 main issues: - we can create windowed plugins in background tabs (Issue 16125) - we can detach tabs with windowed plugins and reattach them (Issue 17110) I reworked the IPCs, so it removes some amount of linux-specific things. We also need less synchronous IPCs to create/destroy plugins, so that should be a bit faster. In particular, I removed the plugin pid map, and instead made sure the renderer always destroys the plugin containers if the plugin process crashes - they will be destroyed if the renderer process crashes. Let me know if you have an issue with that. Also, the intermediate plug/socket creation now happens in webplugin_delegate_impl_gtk. That means test_shell uses it as well. It made the code a lot simpler, and means we're testing it as well, albeit with a bit of extra overhead. Bonus: I found a big bad bug in the GtkPluginContainer that made its width/height alias with some internal gtk structures. That was certainly causing some amounts of bugs. Bonus 2: scrolling now looks more in sync with the rest of the page, though I'm not exactly sure which part caused that. BUG=16125,17110 TEST=a lot of manual testing involving YouTube videos Review URL: http://codereview.chromium.org/174295 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@24309 0039d316-1c4b-4281-b951-d872f2087c98
* Add an UpdateContext call to WebPluginDelegateImpl on the Mac.stuartmorgan@google.com2009-08-131-0/+4
| | | | | | | | | | | On the Mac, Flash appears to cache the CGContextRef provided in NPP_SetWindow until the next NPP_SetWindow call, so we need to call it sometime before the next plugin paint. This allows us to call NPP_SetWindow before telling the plugin to paint, but not from the Paint function itself (where it could have bad side-effects). BUG=18894,18980 TEST=Switch to HQ on a YouTube video; Flash should not crash. Review URL: http://codereview.chromium.org/165344 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23322 0039d316-1c4b-4281-b951-d872f2087c98
* linux: fix race in TransportDIB passingpiman@chromium.org2009-08-101-1/+7
| | | | | | | | | | | | | | | | There was a race condition when the renderer passes a TransportDIB to the plugin process. It is possible that the renderer destroys the TransportDIB before the plugin handles the message, in which case the plugin will fail to map the shm handle. This also cleans up a couple of things. BUG=18320 Review URL: http://codereview.chromium.org/164226 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22949 0039d316-1c4b-4281-b951-d872f2087c98