Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(88)

Side by Side Diff: webkit/glue/plugins/plugin_host.h

Issue 5040: Fix painting problem with transparent plugins because plugins were ignoring t... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 12 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/renderer/webplugin_delegate_proxy.cc ('k') | webkit/glue/plugins/plugin_host.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // TODO: Need mechanism to cleanup the static instance 5 // TODO: Need mechanism to cleanup the static instance
6 6
7 #ifndef WEBKIT_GLUE_PLUGIN_PLUGIN_HOST_H__ 7 #ifndef WEBKIT_GLUE_PLUGIN_PLUGIN_HOST_H__
8 #define WEBKIT_GLUE_PLUGIN_PLUGIN_HOST_H__ 8 #define WEBKIT_GLUE_PLUGIN_PLUGIN_HOST_H__
9 9
10 #include <string> 10 #include <string>
11 #include <vector> 11 #include <vector>
12 #include <map>
13 12
14 #include "base/ref_counted.h" 13 #include "base/ref_counted.h"
15 #include "base/gfx/rect.h"
16 #include "base/task.h"
17 #include "webkit/glue/plugins/nphostapi.h" 14 #include "webkit/glue/plugins/nphostapi.h"
18 #include "third_party/npapi/bindings/npapi.h" 15 #include "third_party/npapi/bindings/npapi.h"
19 16
20 namespace NPAPI 17 namespace NPAPI
21 { 18 {
22 class PluginInstance; 19 class PluginInstance;
23 20
24 // The Plugin Host implements the NPN_xxx functions for NPAPI plugins. 21 // The Plugin Host implements the NPN_xxx functions for NPAPI plugins.
25 // These are the functions exposed from the Plugin Host for use 22 // These are the functions exposed from the Plugin Host for use
26 // by the Plugin. 23 // by the Plugin.
(...skipping 16 matching lines...) Expand all
43 // This function parses it out and adds it to the stream in a WebKit 40 // This function parses it out and adds it to the stream in a WebKit
44 // style. 41 // style.
45 static bool SetPostData(const char *buf, 42 static bool SetPostData(const char *buf,
46 uint32 length, 43 uint32 length,
47 std::vector<std::string>* names, 44 std::vector<std::string>* names,
48 std::vector<std::string>* values, 45 std::vector<std::string>* values,
49 std::vector<char>* body); 46 std::vector<char>* body);
50 47
51 void PatchNPNetscapeFuncs(NPNetscapeFuncs* overrides); 48 void PatchNPNetscapeFuncs(NPNetscapeFuncs* overrides);
52 49
53 // Handles invalidateRect requests for windowless plugins.
54 void InvalidateRect(NPP id, NPRect* invalidRect);
55
56 private: 50 private:
57 PluginHost(); 51 PluginHost();
58 void InitializeHostFuncs(); 52 void InitializeHostFuncs();
59 // For certain plugins like flash we need to throttle invalidateRect
60 // requests as they are made at a high frequency.
61 void OnInvalidateRect(NPP id, PluginInstance* instance);
62
63 static scoped_refptr<PluginHost> singleton_; 53 static scoped_refptr<PluginHost> singleton_;
64 NPNetscapeFuncs host_funcs_; 54 NPNetscapeFuncs host_funcs_;
65 DISALLOW_EVIL_CONSTRUCTORS(PluginHost); 55 DISALLOW_EVIL_CONSTRUCTORS(PluginHost);
66
67 // This structure keeps track of individual plugin instance invalidates.
68 struct ThrottledInvalidates {
69 std::vector<gfx::Rect> throttled_invalidates;
70 };
71
72 // We need to track throttled invalidate rects on a per plugin instance
73 // basis.
74 typedef std::map<NPP, ThrottledInvalidates> InstanceThrottledInvalidatesMap;
75 InstanceThrottledInvalidatesMap instance_throttled_invalidates_;
76
77 ScopedRunnableMethodFactory<PluginHost> throttle_factory_;
78 }; 56 };
79 57
80 } // namespace NPAPI 58 } // namespace NPAPI
81 59
82 #endif // WEBKIT_GLUE_PLUGIN_PLUGIN_HOST_H__ 60 #endif // WEBKIT_GLUE_PLUGIN_PLUGIN_HOST_H__
83 61
OLDNEW
« no previous file with comments | « chrome/renderer/webplugin_delegate_proxy.cc ('k') | webkit/glue/plugins/plugin_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698