diff --git a/WebCore/platform/network/android/ResourceHandleAndroid.cpp b/WebCore/platform/network/android/ResourceHandleAndroid.cpp
index d67bc2b..8da2446 100644
--- a/WebCore/platform/network/android/ResourceHandleAndroid.cpp
+++ b/WebCore/platform/network/android/ResourceHandleAndroid.cpp
@@ -93,7 +93,7 @@
 * side may be slow, but is only used during a navigation to
 * a POST response.
 */
-bool ResourceHandle::willLoadFromCache(ResourceRequest& request) 
+bool ResourceHandle::willLoadFromCache(ResourceRequest& request, Frame*)
 {
     // set the cache policy correctly, copied from
     // network/mac/ResourceHandleMac.mm
diff --git a/WebCore/plugins/PluginDatabase.h b/WebCore/plugins/PluginDatabase.h
index e5e4d4f..14a6fb3 100644
--- a/WebCore/plugins/PluginDatabase.h
+++ b/WebCore/plugins/PluginDatabase.h
@@ -81,14 +81,7 @@
         static Vector<String> defaultPluginDirectories();
         Vector<String> pluginDirectories() const { return m_pluginDirectories; }
 
-#ifdef ANDROID_PLUGINS
-        void setPluginDirectories(const Vector<String>& directories) { m_pluginDirectories = directories; }
-#endif
-
     private:
-#ifndef ANDROID_PLUGINS
-        void setPluginDirectories(const Vector<String>& directories) { m_pluginDirectories = directories; }
-#endif
         void getPluginPathsInDirectories(HashSet<String>&) const;
         void getDeletedPlugins(PluginSet&) const;
 
diff --git a/WebKit/android/WebCoreSupport/FrameLoaderClientAndroid.cpp b/WebKit/android/WebCoreSupport/FrameLoaderClientAndroid.cpp
index 7554a84..c69d5e7 100644
--- a/WebKit/android/WebCoreSupport/FrameLoaderClientAndroid.cpp
+++ b/WebKit/android/WebCoreSupport/FrameLoaderClientAndroid.cpp
@@ -905,17 +905,17 @@
             && equalIgnoringCase(mimeType, "application/x-shockwave-flash");
 }
 
-Widget* FrameLoaderClientAndroid::createPlugin(
+WTF::PassRefPtr<Widget> FrameLoaderClientAndroid::createPlugin(
         const IntSize& size,
         HTMLPlugInElement* element,
         const KURL& url,
-        const WTF::Vector<String, 0u>& names,
-        const WTF::Vector<String, 0u>& values,
+        const WTF::Vector<String>& names,
+        const WTF::Vector<String>& values,
         const String& mimeType,
         bool loadManually) {
     // Create an iframe for youtube urls.
     if (isYouTubeUrl(url, mimeType)) {
-        RefPtr<Frame> frame = createFrame(blankURL(), String(), element,
+        WTF::RefPtr<Frame> frame = createFrame(blankURL(), String(), element,
                 String(), false, 0, 0);
         if (frame) {
             // grab everything after /v/
@@ -938,7 +938,9 @@
             delete a;
             loadDataIntoFrame(frame.get(),
                     KURL("file:///android_asset/webkit/"), String(), s);
-            return frame->view();
+            // Transfer ownership to a local refptr.
+            WTF::RefPtr<Widget> widget = adoptRef(frame->view());
+            return widget.release();
         }
         return NULL;
     }
@@ -961,7 +963,7 @@
     notImplemented();
 }
 
-Widget* FrameLoaderClientAndroid::createJavaAppletWidget(const IntSize&, HTMLAppletElement*,
+WTF::PassRefPtr<Widget> FrameLoaderClientAndroid::createJavaAppletWidget(const IntSize&, HTMLAppletElement*,
                                         const KURL& baseURL, const WTF::Vector<String>& paramNames,
                                         const WTF::Vector<String>& paramValues) {
     // don't support widget yet
diff --git a/WebKit/android/WebCoreSupport/FrameLoaderClientAndroid.h b/WebKit/android/WebCoreSupport/FrameLoaderClientAndroid.h
index e0de972..1db3d70 100644
--- a/WebKit/android/WebCoreSupport/FrameLoaderClientAndroid.h
+++ b/WebKit/android/WebCoreSupport/FrameLoaderClientAndroid.h
@@ -169,12 +169,12 @@
 
         virtual WTF::PassRefPtr<Frame> createFrame(const KURL& url, const String& name, HTMLFrameOwnerElement* ownerElement,
                                    const String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);
-       virtual Widget* createPlugin(const IntSize&, HTMLPlugInElement*, const KURL&, 
-            const WTF::Vector<WebCore::String, 0u>&, const WTF::Vector<String, 0u>&, 
-            const String&, bool);
+       virtual WTF::PassRefPtr<Widget> createPlugin(const IntSize&, HTMLPlugInElement*, const KURL&,
+               const WTF::Vector<String>&, const WTF::Vector<String>&,
+               const String&, bool loadManually);
         virtual void redirectDataToPlugin(Widget* pluginWidget);
-        
-        virtual Widget* createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const KURL& baseURL, const WTF::Vector<String>& paramNames, const WTF::Vector<String>& paramValues);
+
+        virtual WTF::PassRefPtr<Widget> createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const KURL& baseURL, const WTF::Vector<String>& paramNames, const WTF::Vector<String>& paramValues);
 
         virtual ObjectContentType objectContentType(const KURL& url, const String& mimeType);
         virtual String overrideMediaType() const;
