Add ScriptWrappable to more WebCore classes which are commonly JS-wrapped
authoreric@webkit.org <eric@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 18 Nov 2012 03:37:49 +0000 (03:37 +0000)
committereric@webkit.org <eric@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 18 Nov 2012 03:37:49 +0000 (03:37 +0000)
https://bugs.webkit.org/show_bug.cgi?id=102601

Reviewed by Adam Barth.

From my investigations all of these classes exist only to be exposed
to the web (via JavaScript) and are not used internally by WebCore.
I beleive all of them always have wrappers.
These were found using this code:
https://bugs.webkit.org/show_bug.cgi?id=102539#c2

Geolocation -- navigator.geolocation
WebKitCSSMatrix -- represent matrixes in JS through various APIs
DOMStringMap, NamedNodeMap, NodeIterator, TreeWalker -- exclusively for the DOM API
Blob, FileList - used by the File, Clipboard and XHR, also exclusively as API
ValidityState -- formControl.validity
CanvasRenderingContext -- canvas.getContext()
DOMApplicationCache -- window.appcache
Screen -- window.screen
DOMMimeTypeArray -- navigator.mimetypes
DOMPlugin -- navigator.plugins[0]
DOMPluginArray -- navigator.plugins

* Modules/geolocation/Geolocation.h:
* css/WebKitCSSMatrix.h:
* dom/DOMStringMap.h:
* dom/NamedNodeMap.h:
* dom/NodeIterator.h:
* dom/TreeWalker.h:
* fileapi/Blob.h:
* fileapi/FileList.h: (had to un-indent to make check-webkit-style happy)
(FileList):
(WebCore::FileList::create):
(WebCore::FileList::length):
(WebCore::FileList::isEmpty):
(WebCore::FileList::clear):
(WebCore::FileList::append):
* html/ValidityState.h:
* html/canvas/CanvasRenderingContext.h:
* loader/appcache/DOMApplicationCache.h:
* page/Screen.h:
* platform/graphics/wince/MediaPlayerProxy.cpp:
(WebCore::WebMediaPlayerProxy::initEngine): This code was wrong, fixed to use internal APIs.
* plugins/DOMMimeTypeArray.h:
* plugins/DOMPlugin.h:
* plugins/DOMPluginArray.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@135058 268f45cc-cd09-0410-ab3c-d52691b4dbfc

17 files changed:
Source/WebCore/ChangeLog
Source/WebCore/Modules/geolocation/Geolocation.h
Source/WebCore/css/WebKitCSSMatrix.h
Source/WebCore/dom/DOMStringMap.h
Source/WebCore/dom/NamedNodeMap.h
Source/WebCore/dom/NodeIterator.h
Source/WebCore/dom/TreeWalker.h
Source/WebCore/fileapi/Blob.h
Source/WebCore/fileapi/FileList.h
Source/WebCore/html/ValidityState.h
Source/WebCore/html/canvas/CanvasRenderingContext.h
Source/WebCore/loader/appcache/DOMApplicationCache.h
Source/WebCore/page/Screen.h
Source/WebCore/platform/graphics/wince/MediaPlayerProxy.cpp
Source/WebCore/plugins/DOMMimeTypeArray.h
Source/WebCore/plugins/DOMPlugin.h
Source/WebCore/plugins/DOMPluginArray.h

index 46c2af7..bd9a397 100644 (file)
@@ -1,3 +1,52 @@
+2012-11-17  Eric Seidel  <eric@webkit.org>
+
+        Add ScriptWrappable to more WebCore classes which are commonly JS-wrapped
+        https://bugs.webkit.org/show_bug.cgi?id=102601
+
+        Reviewed by Adam Barth.
+
+        From my investigations all of these classes exist only to be exposed
+        to the web (via JavaScript) and are not used internally by WebCore.
+        I beleive all of them always have wrappers.
+        These were found using this code:
+        https://bugs.webkit.org/show_bug.cgi?id=102539#c2
+
+        Geolocation -- navigator.geolocation
+        WebKitCSSMatrix -- represent matrixes in JS through various APIs
+        DOMStringMap, NamedNodeMap, NodeIterator, TreeWalker -- exclusively for the DOM API
+        Blob, FileList - used by the File, Clipboard and XHR, also exclusively as API
+        ValidityState -- formControl.validity
+        CanvasRenderingContext -- canvas.getContext()
+        DOMApplicationCache -- window.appcache
+        Screen -- window.screen
+        DOMMimeTypeArray -- navigator.mimetypes
+        DOMPlugin -- navigator.plugins[0]
+        DOMPluginArray -- navigator.plugins
+
+        * Modules/geolocation/Geolocation.h:
+        * css/WebKitCSSMatrix.h:
+        * dom/DOMStringMap.h:
+        * dom/NamedNodeMap.h:
+        * dom/NodeIterator.h:
+        * dom/TreeWalker.h:
+        * fileapi/Blob.h:
+        * fileapi/FileList.h: (had to un-indent to make check-webkit-style happy)
+        (FileList):
+        (WebCore::FileList::create):
+        (WebCore::FileList::length):
+        (WebCore::FileList::isEmpty):
+        (WebCore::FileList::clear):
+        (WebCore::FileList::append):
+        * html/ValidityState.h:
+        * html/canvas/CanvasRenderingContext.h:
+        * loader/appcache/DOMApplicationCache.h:
+        * page/Screen.h:
+        * platform/graphics/wince/MediaPlayerProxy.cpp:
+        (WebCore::WebMediaPlayerProxy::initEngine): This code was wrong, fixed to use internal APIs.
+        * plugins/DOMMimeTypeArray.h:
+        * plugins/DOMPlugin.h:
+        * plugins/DOMPluginArray.h:
+
 2012-11-17  Alexandru Chiculita  <achicu@adobe.com>
 
         [Texmap][CSS Shaders] Reuse the precompiled shader for custom filters in TextureMapperGL
index ffc9010..bc4a6e3 100644 (file)
@@ -35,6 +35,7 @@
 #include "PositionError.h"
 #include "PositionErrorCallback.h"
 #include "PositionOptions.h"
+#include "ScriptWrappable.h"
 #include "Timer.h"
 
 namespace WebCore {
@@ -47,7 +48,7 @@ class GeolocationPosition;
 class Page;
 class ScriptExecutionContext;
 
-class Geolocation : public RefCounted<Geolocation>, public ActiveDOMObject
+class Geolocation : public ScriptWrappable, public RefCounted<Geolocation>, public ActiveDOMObject
 {
 public:
     static PassRefPtr<Geolocation> create(ScriptExecutionContext*);
index 5f7a5be..45393fb 100644 (file)
@@ -26,6 +26,7 @@
 #ifndef WebKitCSSMatrix_h
 #define WebKitCSSMatrix_h
 
+#include "ScriptWrappable.h"
 #include "TransformationMatrix.h"
 #include <wtf/RefCounted.h>
 #include <wtf/RefPtr.h>
@@ -35,7 +36,7 @@ namespace WebCore {
 
 typedef int ExceptionCode;
 
-class WebKitCSSMatrix : public RefCounted<WebKitCSSMatrix> {
+class WebKitCSSMatrix : public ScriptWrappable, public RefCounted<WebKitCSSMatrix> {
 public:
     static PassRefPtr<WebKitCSSMatrix> create(const TransformationMatrix& m)
     {
index 2b29f22..51e2b89 100644 (file)
@@ -26,6 +26,7 @@
 #ifndef DOMStringMap_h
 #define DOMStringMap_h
 
+#include "ScriptWrappable.h"
 #include <wtf/Noncopyable.h>
 #include <wtf/Vector.h>
 #include <wtf/text/WTFString.h>
@@ -35,7 +36,7 @@ namespace WebCore {
 class Element;
 typedef int ExceptionCode;
 
-class DOMStringMap {
+class DOMStringMap : public ScriptWrappable {
     WTF_MAKE_NONCOPYABLE(DOMStringMap); WTF_MAKE_FAST_ALLOCATED;
 public:
     virtual ~DOMStringMap();
index c3e0eef..d9fde2d 100644 (file)
@@ -25,6 +25,7 @@
 #ifndef NamedNodeMap_h
 #define NamedNodeMap_h
 
+#include "ScriptWrappable.h"
 #include <wtf/PassOwnPtr.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/text/WTFString.h>
@@ -36,7 +37,7 @@ class Element;
 
 typedef int ExceptionCode;
 
-class NamedNodeMap {
+class NamedNodeMap : public ScriptWrappable {
     WTF_MAKE_FAST_ALLOCATED;
     friend class Element;
 public:
index 3eec49a..1fad1f7 100644 (file)
@@ -26,6 +26,7 @@
 #define NodeIterator_h
 
 #include "NodeFilter.h"
+#include "ScriptWrappable.h"
 #include "Traversal.h"
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
@@ -34,7 +35,7 @@ namespace WebCore {
 
     typedef int ExceptionCode;
 
-    class NodeIterator : public RefCounted<NodeIterator>, public Traversal {
+    class NodeIterator : public ScriptWrappable, public RefCounted<NodeIterator>, public Traversal {
     public:
         static PassRefPtr<NodeIterator> create(PassRefPtr<Node> rootNode, unsigned whatToShow, PassRefPtr<NodeFilter> filter, bool expandEntityReferences)
         {
index 88e59da..5a5d586 100644 (file)
@@ -26,6 +26,7 @@
 #define TreeWalker_h
 
 #include "NodeFilter.h"
+#include "ScriptWrappable.h"
 #include "Traversal.h"
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
@@ -34,7 +35,7 @@ namespace WebCore {
 
     typedef int ExceptionCode;
 
-    class TreeWalker : public RefCounted<TreeWalker>, public Traversal {
+    class TreeWalker : public ScriptWrappable, public RefCounted<TreeWalker>, public Traversal {
     public:
         static PassRefPtr<TreeWalker> create(PassRefPtr<Node> rootNode, unsigned whatToShow, PassRefPtr<NodeFilter> filter, bool expandEntityReferences)
         {
index 9898e23..f4a01af 100644 (file)
@@ -33,6 +33,7 @@
 
 #include "BlobData.h"
 #include "KURL.h"
+#include "ScriptWrappable.h"
 #include <wtf/PassOwnPtr.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
@@ -43,7 +44,7 @@ namespace WebCore {
 
 class ScriptExecutionContext;
 
-class Blob : public RefCounted<Blob> {
+class Blob : public ScriptWrappable, public RefCounted<Blob> {
 public:
     static PassRefPtr<Blob> create()
     {
index 928981f..ee8755d 100644 (file)
@@ -27,6 +27,7 @@
 #define FileList_h
 
 #include "File.h"
+#include "ScriptWrappable.h"
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 #include <wtf/RefPtr.h>
 
 namespace WebCore {
 
-    class FileList : public RefCounted<FileList> {
-    public:
-        static PassRefPtr<FileList> create()
-        {
-            return adoptRef(new FileList);
-        }
+class FileList : public ScriptWrappable, public RefCounted<FileList> {
+public:
+    static PassRefPtr<FileList> create()
+    {
+        return adoptRef(new FileList);
+    }
 
-        unsigned length() const { return m_files.size(); }
-        File* item(unsigned index) const;
+    unsigned length() const { return m_files.size(); }
+    File* item(unsigned index) const;
 
-        bool isEmpty() const { return m_files.isEmpty(); }
-        void clear() { m_files.clear(); }
-        void append(PassRefPtr<File> file) { m_files.append(file); }
-        Vector<String> paths() const;
+    bool isEmpty() const { return m_files.isEmpty(); }
+    void clear() { m_files.clear(); }
+    void append(PassRefPtr<File> file) { m_files.append(file); }
+    Vector<String> paths() const;
 
-    private:
-        FileList();
+private:
+    FileList();
 
-        Vector<RefPtr<File> > m_files;
-    };
+    Vector<RefPtr<File> > m_files;
+};
 
 } // namespace WebCore
 
index 17e94c9..28f9ec6 100644 (file)
 #define ValidityState_h
 
 #include "FormAssociatedElement.h"
+#include "ScriptWrappable.h"
 #include <wtf/PassOwnPtr.h>
 
 namespace WebCore {
 
-class ValidityState {
+class ValidityState : public ScriptWrappable {
     WTF_MAKE_NONCOPYABLE(ValidityState); WTF_MAKE_FAST_ALLOCATED;
 public:
     static PassOwnPtr<ValidityState> create(FormAssociatedElement* control)
index 124729c..8e849bd 100644 (file)
@@ -28,6 +28,7 @@
 
 #include "GraphicsLayer.h"
 #include "HTMLCanvasElement.h"
+#include "ScriptWrappable.h"
 #include <wtf/HashSet.h>
 #include <wtf/Noncopyable.h>
 #include <wtf/text/StringHash.h>
@@ -41,7 +42,7 @@ class HTMLVideoElement;
 class KURL;
 class WebGLObject;
 
-class CanvasRenderingContext {
+class CanvasRenderingContext : public ScriptWrappable {
     WTF_MAKE_NONCOPYABLE(CanvasRenderingContext); WTF_MAKE_FAST_ALLOCATED;
 public:
     virtual ~CanvasRenderingContext() { }
index 2e80318..ff56838 100644 (file)
@@ -30,6 +30,7 @@
 #include "DOMWindowProperty.h"
 #include "EventNames.h"
 #include "EventTarget.h"
+#include "ScriptWrappable.h"
 #include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 #include <wtf/PassRefPtr.h>
@@ -42,7 +43,7 @@ namespace WebCore {
 class Frame;
 class KURL;
 
-class DOMApplicationCache : public RefCounted<DOMApplicationCache>, public EventTarget, public DOMWindowProperty {
+class DOMApplicationCache : public ScriptWrappable, public RefCounted<DOMApplicationCache>, public EventTarget, public DOMWindowProperty {
 public:
     static PassRefPtr<DOMApplicationCache> create(Frame* frame) { return adoptRef(new DOMApplicationCache(frame)); }
     ~DOMApplicationCache() { ASSERT(!m_frame); }
index 2624f1a..5abcc1d 100644 (file)
@@ -31,6 +31,7 @@
 #define Screen_h
 
 #include "DOMWindowProperty.h"
+#include "ScriptWrappable.h"
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 
@@ -38,7 +39,7 @@ namespace WebCore {
 
     class Frame;
 
-    class Screen : public RefCounted<Screen>, public DOMWindowProperty {
+    class Screen : public ScriptWrappable, public RefCounted<Screen>, public DOMWindowProperty {
     public:
         static PassRefPtr<Screen> create(Frame *frame) { return adoptRef(new Screen(frame)); }
 
index a4abc3f..658d698 100644 (file)
@@ -101,9 +101,9 @@ void WebMediaPlayerProxy::initEngine()
     String serviceType;
 
     // add all attributes set on the embed object
-    if (NamedNodeMap* attributes = element->attributes()) {
-        for (unsigned i = 0; i < attributes->length(); ++i) {
-            Attribute* it = attributes->attributeItem(i);
+    if (element->hasAttributes()) {
+        for (unsigned i = 0; i < element->attributeCount(); ++i) {
+            Attribute* it = element->attributeItem(i);
             paramNames.append(it->name().localName().string());
             paramValues.append(it->value().string());
         }
index 25c276d..58161df 100644 (file)
@@ -23,6 +23,7 @@
 
 #include "DOMMimeType.h"
 #include "DOMWindowProperty.h"
+#include "ScriptWrappable.h"
 #include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
@@ -33,7 +34,7 @@ namespace WebCore {
 class Frame;
 class PluginData;
 
-class DOMMimeTypeArray : public RefCounted<DOMMimeTypeArray>, public DOMWindowProperty {
+class DOMMimeTypeArray : public ScriptWrappable, public RefCounted<DOMMimeTypeArray>, public DOMWindowProperty {
 public:
     static PassRefPtr<DOMMimeTypeArray> create(Frame* frame) { return adoptRef(new DOMMimeTypeArray(frame)); }
     ~DOMMimeTypeArray();
index 15b36d4..908b94f 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "FrameDestructionObserver.h"
 #include "DOMMimeType.h"
+#include "ScriptWrappable.h"
 #include <wtf/Forward.h>
 #include <wtf/RefPtr.h>
 #include <wtf/RefCounted.h>
@@ -31,7 +32,7 @@ namespace WebCore {
 class Plugin;
 class PluginData;
 
-class DOMPlugin : public RefCounted<DOMPlugin>, public FrameDestructionObserver {
+class DOMPlugin : public ScriptWrappable, public RefCounted<DOMPlugin>, public FrameDestructionObserver {
 public:
     static PassRefPtr<DOMPlugin> create(PluginData* pluginData, Frame* frame, unsigned index) { return adoptRef(new DOMPlugin(pluginData, frame, index)); }
     ~DOMPlugin();
index 6c35457..447c3cf 100644 (file)
@@ -23,6 +23,7 @@
 
 #include "DOMPlugin.h"
 #include "DOMWindowProperty.h"
+#include "ScriptWrappable.h"
 #include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
@@ -33,7 +34,7 @@ namespace WebCore {
 class Frame;
 class PluginData;
 
-class DOMPluginArray : public RefCounted<DOMPluginArray>, public DOMWindowProperty {
+class DOMPluginArray : public ScriptWrappable, public RefCounted<DOMPluginArray>, public DOMWindowProperty {
 public:
     static PassRefPtr<DOMPluginArray> create(Frame* frame) { return adoptRef(new DOMPluginArray(frame)); }
     ~DOMPluginArray();