[Chromium] Move getPluginsList out of PlatformSupport
https://bugs.webkit.org/show_bug.cgi?id=96507

Reviewed by Darin Fisher.

Part of a refactoring series. See tracking bug 82948.

Source/Platform:

* Platform.gypi:
* chromium/public/Platform.h:
(WebKit):
(Platform):
(WebKit::Platform::getPluginList):
* chromium/public/WebPluginListBuilder.h: Added.
(WebKit):
(WebPluginListBuilder):

Source/WebCore:

* WebCore.gypi:
* platform/chromium/PlatformSupport.h:
(PlatformSupport):
* plugins/chromium/PluginDataChromium.cpp:
(WebCore::PluginCache::plugins):
* plugins/chromium/PluginListBuilder.cpp: Added.
(WebKit):
(WebKit::PluginListBuilder::addPlugin):
(WebKit::PluginListBuilder::addMediaTypeToLastPlugin):
(WebKit::PluginListBuilder::addFileExtensionToLastMediaType):
* plugins/chromium/PluginListBuilder.h: Added.
(WebKit):
(PluginListBuilder):
(WebKit::PluginListBuilder::PluginListBuilder):

Source/WebKit/chromium:

* WebKit.gyp:
* public/WebPluginListBuilder.h:
* public/platform/WebKitPlatformSupport.h:
(WebKit):
(WebKit::WebKitPlatformSupport::idbFactory):
* src/PlatformSupport.cpp:
(WebCore::PlatformSupport::idbFactory):
* src/WebPluginListBuilderImpl.cpp: Removed.
* src/WebPluginListBuilderImpl.h: Removed.


git-svn-id: https://svn.webkit.org/repository/webkit/trunk/Source/Platform/chromium/public@137177 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Platform.h b/Platform.h
index 8daabe3..bd80f06 100644
--- a/Platform.h
+++ b/Platform.h
@@ -60,6 +60,7 @@
 class WebMediaStreamCenterClient;
 class WebMessagePortChannel;
 class WebMimeRegistry;
+class WebPluginListBuilder;
 class WebRTCPeerConnectionHandler;
 class WebRTCPeerConnectionHandlerClient;
 class WebSandboxSupport;
@@ -237,6 +238,13 @@
     virtual void cacheMetadata(const WebURL&, double responseTime, const char* data, size_t dataSize) { }
 
 
+    // Plugins -------------------------------------------------------------
+
+    // If refresh is true, then cached information should not be used to
+    // satisfy this call.
+    virtual void getPluginList(bool refresh, WebPluginListBuilder*) { }
+
+
     // Resources -----------------------------------------------------------
 
     // Returns a localized string resource (with substitution parameters).
diff --git a/WebPluginListBuilder.h b/WebPluginListBuilder.h
new file mode 100644
index 0000000..4bd427d
--- /dev/null
+++ b/WebPluginListBuilder.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2009 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WebPluginListBuilder_h
+#define WebPluginListBuilder_h
+
+namespace WebKit {
+
+class WebString;
+
+// An interface for building a list of known plugins.
+class WebPluginListBuilder {
+public:
+    virtual void addPlugin(
+        const WebString& name, const WebString& description,
+        const WebString& fileName) = 0;
+
+    virtual void addMediaTypeToLastPlugin(
+        const WebString& name, const WebString& description) = 0;
+
+    virtual void addFileExtensionToLastMediaType(
+        const WebString& fileExtension) = 0;
+};
+
+} // namespace WebKit
+
+#endif