Eliminate ResourceBuffer and use SharedBuffer directly instead
[WebKit-https.git] / Source / WebKit2 / Platform / IPC / DataReference.h
index 4f8f48d..e6806b0 100644 (file)
@@ -83,21 +83,27 @@ private:
     size_t m_size;
 };
 
-class SharedBufferDataReference: public DataReference {
+class SharedBufferDataReference : public DataReference {
 public:
+    // FIXME: This class doesn't handle null, so the argument should be a reference or PassRef.
     SharedBufferDataReference(WebCore::SharedBuffer* buffer)
+        : m_buffer(buffer)
     {
-        m_buffer = buffer;
     }
 
-    size_t size() const { return m_buffer->size(); }
+private:
+    // FIXME: It is a bad idea to violate the Liskov Substitution Principle as we do here.
+    // Since we are using DataReference as a polymoprhic base class in this fashion,
+    // then we need it to be a base class that does not have functions such as isEmpty,
+    // size, data, and vector, all of which will do the wrong thing if they are called.
+    // Deleting these functions here does not prevent them from being called.
+    bool isEmpty() const = delete;
+    size_t size() const = delete;
     const uint8_t* data() const = delete;
     Vector<uint8_t> vector() const = delete;
 
-    void encode(ArgumentEncoder&) const override;
-    virtual ~SharedBufferDataReference() { m_buffer = 0; }
+    virtual void encode(ArgumentEncoder&) const override;
 
-private:
     RefPtr<WebCore::SharedBuffer> m_buffer;
 };