Changeset 62813 in webkit


Ignore:
Timestamp:
Jul 8, 2010 11:59:32 AM (14 years ago)
Author:
andersca@apple.com
Message:

Add a Plugin abstract base class and a DummyPlugin that implements it
https://bugs.webkit.org/show_bug.cgi?id=41885

Reviewed by Sam Weinig.

  • WebKit2.xcodeproj/project.pbxproj:

Add files.

  • WebProcess/Plugins/DummyPlugin.cpp: Added.

(WebKit::DummyPlugin::paint):
Paint a red rectangle.

  • WebProcess/Plugins/Plugin.cpp: Added.
  • WebProcess/Plugins/Plugin.h: Added.

Add Plugin, an abstract baseclass.

  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::PluginView):
(WebKit::PluginView::~PluginView):
(WebKit::PluginView::paint):
(WebKit::PluginView::viewGeometryDidChange):

  • WebProcess/Plugins/PluginView.h:

(WebKit::PluginView::create):
Add a Plugin member function and forward PluginView calls to it.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::createPlugin):
Make a DummyPlugin and pass it to the PluginView.

  • win/WebKit2.vcproj:

Add files.

Location:
trunk/WebKit2
Files:
6 edited
4 copied

Legend:

Unmodified
Added
Removed
  • trunk/WebKit2/ChangeLog

    r62809 r62813  
     12010-07-08  Anders Carlsson  <andersca@apple.com>
     2
     3        Reviewed by Sam Weinig.
     4
     5        Add a Plugin abstract base class and a DummyPlugin that implements it
     6        https://bugs.webkit.org/show_bug.cgi?id=41885
     7
     8        * WebKit2.xcodeproj/project.pbxproj:
     9        Add files.
     10
     11        * WebProcess/Plugins/DummyPlugin.cpp: Added.
     12        (WebKit::DummyPlugin::paint):
     13        Paint a red rectangle.
     14       
     15        * WebProcess/Plugins/Plugin.cpp: Added.
     16        * WebProcess/Plugins/Plugin.h: Added.
     17        Add Plugin, an abstract baseclass.
     18
     19        * WebProcess/Plugins/PluginView.cpp:
     20        (WebKit::PluginView::PluginView):
     21        (WebKit::PluginView::~PluginView):
     22        (WebKit::PluginView::paint):
     23        (WebKit::PluginView::viewGeometryDidChange):
     24        * WebProcess/Plugins/PluginView.h:
     25        (WebKit::PluginView::create):
     26        Add a Plugin member function and forward PluginView calls to it.
     27
     28        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
     29        (WebKit::WebFrameLoaderClient::createPlugin):
     30        Make a DummyPlugin and pass it to the PluginView.
     31
     32        * win/WebKit2.vcproj:
     33        Add files.
     34       
    1352010-07-08  Anders Carlsson  <andersca@apple.com>
    236
  • trunk/WebKit2/WebKit2.xcodeproj/project.pbxproj

    r62809 r62813  
    4949                1A6FB7AE11E64B6800DB1371 /* PluginView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A6FB7AC11E64B6800DB1371 /* PluginView.cpp */; };
    5050                1A6FB7AF11E64B6800DB1371 /* PluginView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A6FB7AD11E64B6800DB1371 /* PluginView.h */; };
     51                1A6FB7D211E651E200DB1371 /* Plugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A6FB7D011E651E200DB1371 /* Plugin.cpp */; };
     52                1A6FB7D311E651E200DB1371 /* Plugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A6FB7D111E651E200DB1371 /* Plugin.h */; };
     53                1A6FB7E611E6530500DB1371 /* DummyPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A6FB7E411E6530500DB1371 /* DummyPlugin.h */; };
     54                1A6FB7E711E6530500DB1371 /* DummyPlugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A6FB7E511E6530500DB1371 /* DummyPlugin.cpp */; };
    5155                1AA1CC5D100FA1A10078DEBC /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1AA1CC5C100FA1A10078DEBC /* QuartzCore.framework */; };
    5256                1AA1CD07100FA1BA0078DEBC /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1AA1CD06100FA1BA0078DEBC /* Carbon.framework */; };
     
    303307                1A6FA31011E3921E00DB1371 /* MainMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MainMac.cpp; path = mac/MainMac.cpp; sourceTree = "<group>"; };
    304308                1A6FA31511E3923600DB1371 /* WebKitMain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebKitMain.cpp; sourceTree = "<group>"; };
    305                 1A6FB7AC11E64B6800DB1371 /* PluginView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PluginView.cpp; path = Plugins/PluginView.cpp; sourceTree = "<group>"; };
    306                 1A6FB7AD11E64B6800DB1371 /* PluginView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PluginView.h; path = Plugins/PluginView.h; sourceTree = "<group>"; };
     309                1A6FB7AC11E64B6800DB1371 /* PluginView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PluginView.cpp; sourceTree = "<group>"; };
     310                1A6FB7AD11E64B6800DB1371 /* PluginView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PluginView.h; sourceTree = "<group>"; };
     311                1A6FB7D011E651E200DB1371 /* Plugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Plugin.cpp; sourceTree = "<group>"; };
     312                1A6FB7D111E651E200DB1371 /* Plugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Plugin.h; sourceTree = "<group>"; };
     313                1A6FB7E411E6530500DB1371 /* DummyPlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DummyPlugin.h; sourceTree = "<group>"; };
     314                1A6FB7E511E6530500DB1371 /* DummyPlugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DummyPlugin.cpp; sourceTree = "<group>"; };
    307315                1AA1C79A100E7FC50078DEBC /* WebCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = WebCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
    308316                1AA1C7DE100E846E0078DEBC /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = JavaScriptCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
     
    620628                        isa = PBXGroup;
    621629                        children = (
     630                                1A6FB7E511E6530500DB1371 /* DummyPlugin.cpp */,
     631                                1A6FB7E411E6530500DB1371 /* DummyPlugin.h */,
     632                                1A6FB7D011E651E200DB1371 /* Plugin.cpp */,
     633                                1A6FB7D111E651E200DB1371 /* Plugin.h */,
    622634                                1A6FB7AC11E64B6800DB1371 /* PluginView.cpp */,
    623635                                1A6FB7AD11E64B6800DB1371 /* PluginView.h */,
    624636                        );
    625                         name = Plugins;
     637                        path = Plugins;
    626638                        sourceTree = "<group>";
    627639                };
     
    11711183                                BC72BA1E11E64907001EB4EA /* WebBackForwardList.h in Headers */,
    11721184                                1A6FB7AF11E64B6800DB1371 /* PluginView.h in Headers */,
     1185                                1A6FB7D311E651E200DB1371 /* Plugin.h in Headers */,
     1186                                1A6FB7E611E6530500DB1371 /* DummyPlugin.h in Headers */,
    11731187                        );
    11741188                        runOnlyForDeploymentPostprocessing = 0;
     
    13531367                                BC72BA1D11E64907001EB4EA /* WebBackForwardList.cpp in Sources */,
    13541368                                1A6FB7AE11E64B6800DB1371 /* PluginView.cpp in Sources */,
     1369                                1A6FB7D211E651E200DB1371 /* Plugin.cpp in Sources */,
     1370                                1A6FB7E711E6530500DB1371 /* DummyPlugin.cpp in Sources */,
    13551371                        );
    13561372                        runOnlyForDeploymentPostprocessing = 0;
  • trunk/WebKit2/WebProcess/Plugins/DummyPlugin.cpp

    r62809 r62813  
    2424 */
    2525
    26 #include "PluginView.h"
     26#include "DummyPlugin.h"
    2727
    28 #include "Plugin.h"
    2928#include <WebCore/GraphicsContext.h>
    3029
     
    3332namespace WebKit {
    3433
    35 PluginView::PluginView()
     34DummyPlugin::DummyPlugin()
    3635{
    3736}
    3837
    39 PluginView::~PluginView()
     38void DummyPlugin::initialize(const String& mimeType, const KURL&, bool loadManually)
    4039{
    4140}
    42 
    43 void PluginView::setFrameRect(const WebCore::IntRect& rect)
     41   
     42void DummyPlugin::destroy()
    4443{
    45     Widget::setFrameRect(rect);
    46     viewGeometryDidChange();
    4744}
    48 
    49 void PluginView::paint(GraphicsContext* context, const IntRect& dirtyRect)
     45   
     46void DummyPlugin::paint(GraphicsContext* context, const IntRect& dirtyRect)
    5047{
    51     if (context->paintingDisabled())
    52         return;
    53    
    54     IntRect paintRect = intersection(dirtyRect, frameRect());
    55     if (paintRect.isEmpty())
    56         return;
    57 
    5848#if PLATFORM(MAC)
    5949    CGContextRef cgContext = context->platformContext();
     
    6252    CGColorRef redColor = CGColorCreateGenericRGB(1, 0, 0, 1);
    6353    CGContextSetFillColorWithColor(cgContext, redColor);
    64     CGContextFillRect(cgContext, paintRect);
     54    CGContextFillRect(cgContext, dirtyRect);
    6555    CGColorRelease(redColor);
    66 #endif
     56#endif    
    6757}
    68 
    69 void PluginView::viewGeometryDidChange()
    70 {
    71 }
    72 
    73 void PluginView::invalidateRect(const IntRect&)
     58   
     59void DummyPlugin::geometryDidChange(const IntRect& frameRect)
    7460{
    7561}
  • trunk/WebKit2/WebProcess/Plugins/DummyPlugin.h

    r62809 r62813  
    2424 */
    2525
    26 #ifndef PluginView_h
    27 #define PluginView_h
     26#ifndef DummyPlugin_h
     27#define DummyPlugin_h
    2828
    29 #include <WebCore/Widget.h>
    30 
    31 // FIXME: Eventually this should move to WebCore.
     29#include "Plugin.h"
     30#include <wtf/PassRefPtr.h>
    3231
    3332namespace WebKit {
    3433
    35 class Plugin;
    36 
    37 class PluginView : public WebCore::Widget {
     34class DummyPlugin : public Plugin {
    3835public:
    39     static PassRefPtr<PluginView> create()
     36    static PassRefPtr<DummyPlugin> create()
    4037    {
    41         return adoptRef(new PluginView());
     38        return adoptRef(new DummyPlugin);
    4239    }
    4340
    4441private:
    45     PluginView();
    46     virtual ~PluginView();
     42    DummyPlugin();
    4743
    48     void viewGeometryDidChange();
    49 
    50     // WebCore::Widget
    51     virtual void setFrameRect(const WebCore::IntRect&);
    52     virtual void paint(WebCore::GraphicsContext*, const WebCore::IntRect&);
    53     virtual void invalidateRect(const WebCore::IntRect&);
    54 };
     44    // Plugin
     45    virtual void initialize(const WebCore::String& mimeType, const WebCore::KURL&, bool loadManually);
     46    virtual void destroy();
     47    virtual void paint(WebCore::GraphicsContext*, const WebCore::IntRect& dirtyRect);
     48    virtual void geometryDidChange(const WebCore::IntRect& frameRect);
     49}
    5550
    5651} // namespace WebKit
    5752
    58 #endif // PluginView_h
     53#endif // DummyPlugin_h
  • trunk/WebKit2/WebProcess/Plugins/Plugin.cpp

    r62809 r62813  
    2424 */
    2525
    26 #ifndef PluginView_h
    27 #define PluginView_h
     26#include "Plugin.h"
    2827
    29 #include <WebCore/Widget.h>
    30 
    31 // FIXME: Eventually this should move to WebCore.
     28using namespace WebCore;
    3229
    3330namespace WebKit {
    3431
    35 class Plugin;
     32Plugin::Plugin()
     33{
     34}
    3635
    37 class PluginView : public WebCore::Widget {
    38 public:
    39     static PassRefPtr<PluginView> create()
    40     {
    41         return adoptRef(new PluginView());
    42     }
    43 
    44 private:
    45     PluginView();
    46     virtual ~PluginView();
    47 
    48     void viewGeometryDidChange();
    49 
    50     // WebCore::Widget
    51     virtual void setFrameRect(const WebCore::IntRect&);
    52     virtual void paint(WebCore::GraphicsContext*, const WebCore::IntRect&);
    53     virtual void invalidateRect(const WebCore::IntRect&);
    54 };
     36Plugin::~Plugin()
     37{
     38}
    5539
    5640} // namespace WebKit
    57 
    58 #endif // PluginView_h
  • trunk/WebKit2/WebProcess/Plugins/Plugin.h

    r62809 r62813  
    2424 */
    2525
    26 #ifndef PluginView_h
    27 #define PluginView_h
     26#ifndef Plugin_h
     27#define Plugin_h
    2828
    29 #include <WebCore/Widget.h>
     29#include <wtf/RefCounted.h>
    3030
    31 // FIXME: Eventually this should move to WebCore.
     31namespace WebCore {
     32    class GraphicsContext;
     33    class IntRect;
     34    class KURL;
     35    class String;
     36}
    3237
    3338namespace WebKit {
    3439
    35 class Plugin;
     40class Plugin : public RefCounted<Plugin> {
     41public:
     42    virtual ~Plugin();
     43   
     44    virtual void initialize(const WebCore::String& mimeType, const WebCore::KURL&, bool loadManually) = 0;
     45    virtual void destroy() = 0;
     46    virtual void paint(WebCore::GraphicsContext*, const WebCore::IntRect& dirtyRect) = 0;
     47    virtual void geometryDidChange(const WebCore::IntRect& frameRect) = 0;
    3648
    37 class PluginView : public WebCore::Widget {
    38 public:
    39     static PassRefPtr<PluginView> create()
    40     {
    41         return adoptRef(new PluginView());
    42     }
    43 
    44 private:
    45     PluginView();
    46     virtual ~PluginView();
    47 
    48     void viewGeometryDidChange();
    49 
    50     // WebCore::Widget
    51     virtual void setFrameRect(const WebCore::IntRect&);
    52     virtual void paint(WebCore::GraphicsContext*, const WebCore::IntRect&);
    53     virtual void invalidateRect(const WebCore::IntRect&);
     49protected:
     50    Plugin();
    5451};
    55 
     52   
    5653} // namespace WebKit
    5754
    58 #endif // PluginView_h
     55#endif // Plugin_h
  • trunk/WebKit2/WebProcess/Plugins/PluginView.cpp

    r62809 r62813  
    3333namespace WebKit {
    3434
    35 PluginView::PluginView()
     35PluginView::PluginView(PassRefPtr<Plugin> plugin)
     36    : m_plugin(plugin)
    3637{
    3738}
     
    3940PluginView::~PluginView()
    4041{
     42    m_plugin->destroy();
    4143}
    4244
     
    5658        return;
    5759
    58 #if PLATFORM(MAC)
    59     CGContextRef cgContext = context->platformContext();
    60     CGContextSaveGState(cgContext);
    61    
    62     CGColorRef redColor = CGColorCreateGenericRGB(1, 0, 0, 1);
    63     CGContextSetFillColorWithColor(cgContext, redColor);
    64     CGContextFillRect(cgContext, paintRect);
    65     CGColorRelease(redColor);
    66 #endif
     60    m_plugin->paint(context, paintRect);
    6761}
    6862
    6963void PluginView::viewGeometryDidChange()
    7064{
     65    m_plugin->geometryDidChange(frameRect());
    7166}
    7267
  • trunk/WebKit2/WebProcess/Plugins/PluginView.h

    r62809 r62813  
    3737class PluginView : public WebCore::Widget {
    3838public:
    39     static PassRefPtr<PluginView> create()
     39    static PassRefPtr<PluginView> create(PassRefPtr<Plugin> plugin)
    4040    {
    41         return adoptRef(new PluginView());
     41        return adoptRef(new PluginView(plugin));
    4242    }
    4343
    4444private:
    45     PluginView();
     45    PluginView(PassRefPtr<Plugin>);
    4646    virtual ~PluginView();
    4747
     
    5252    virtual void paint(WebCore::GraphicsContext*, const WebCore::IntRect&);
    5353    virtual void invalidateRect(const WebCore::IntRect&);
     54   
     55    RefPtr<Plugin> m_plugin;
    5456};
    5557
  • trunk/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp

    r62809 r62813  
    2626#include "WebFrameLoaderClient.h"
    2727
     28#include "DummyPlugin.h"
    2829#include "NotImplemented.h"
    2930#include "PluginView.h"
     
    767768{
    768769    notImplemented();
    769     return PluginView::create();
     770   
     771    RefPtr<DummyPlugin> plugin = DummyPlugin::create();
     772
     773    return PluginView::create(plugin.release());
    770774}
    771775
  • trunk/WebKit2/win/WebKit2.vcproj

    r62809 r62813  
    825825                                >
    826826                                <File
     827                                        RelativePath="..\WebProcess\Plugins\DummyPlugin.cpp"
     828                                        >
     829                                </File>
     830                                <File
     831                                        RelativePath="..\WebProcess\Plugins\DummyPlugin.h"
     832                                        >
     833                                </File>
     834                                <File
     835                                        RelativePath="..\WebProcess\Plugins\Plugin.cpp"
     836                                        >
     837                                </File>
     838                                <File
     839                                        RelativePath="..\WebProcess\Plugins\Plugin.h"
     840                                        >
     841                                </File>
     842                                <File
    827843                                        RelativePath="..\WebProcess\Plugins\PluginView.cpp"
    828844                                        >
Note: See TracChangeset for help on using the changeset viewer.