[BlackBerry] Enable MEDIA_STREAM by default
https://bugs.webkit.org/show_bug.cgi?id=88849

Patch by Robin Cao <robin.cao@torchmobile.com.cn> on 2012-06-13
Reviewed by Antonio Gomes.

.:

* Source/cmake/OptionsBlackBerry.cmake:
* Source/cmakeconfig.h.cmake:

Source/WebCore:

Covered by existing test cases.

* CMakeLists.txt:
* PlatformBlackBerry.cmake:
* platform/mediastream/blackberry/DeprecatedPeerConnectionHandler.cpp: Added.
(WebCore):
(WebCore::DeprecatedPeerConnectionHandler::create):
(WebCore::DeprecatedPeerConnectionHandler::DeprecatedPeerConnectionHandler):
(WebCore::DeprecatedPeerConnectionHandler::~DeprecatedPeerConnectionHandler):
(WebCore::DeprecatedPeerConnectionHandler::produceInitialOffer):
(WebCore::DeprecatedPeerConnectionHandler::handleInitialOffer):
(WebCore::DeprecatedPeerConnectionHandler::processSDP):
(WebCore::DeprecatedPeerConnectionHandler::processPendingStreams):
(WebCore::DeprecatedPeerConnectionHandler::sendDataStreamMessage):
(WebCore::DeprecatedPeerConnectionHandler::stop):
* platform/mediastream/blackberry/MediaStreamCenterBlackBerry.cpp: Added.
(WebCore):
(WebCore::MediaStreamCenter::instance):
(WebCore::MediaStreamCenterBlackBerry::MediaStreamCenterBlackBerry):
(WebCore::MediaStreamCenterBlackBerry::~MediaStreamCenterBlackBerry):
(WebCore::MediaStreamCenterBlackBerry::queryMediaStreamSources):
(WebCore::MediaStreamCenterBlackBerry::didSetMediaStreamTrackEnabled):
(WebCore::MediaStreamCenterBlackBerry::didStopLocalMediaStream):
(WebCore::MediaStreamCenterBlackBerry::didCreateMediaStream):
(WebCore::MediaStreamCenterBlackBerry::constructSDP):
* platform/mediastream/blackberry/MediaStreamCenterBlackBerry.h: Added.
(WebCore):
(MediaStreamCenterBlackBerry):

Source/WebKit:

* PlatformBlackBerry.cmake:

Source/WebKit/blackberry:

* Api/WebPage.cpp:
(BlackBerry::WebKit::WebPagePrivate::init):
* WebCoreSupport/UserMediaClientImpl.cpp: Added.
(WebCore):
(WebCore::UserMediaClientImpl::UserMediaClientImpl):
(WebCore::UserMediaClientImpl::~UserMediaClientImpl):
(WebCore::UserMediaClientImpl::pageDestroyed):
(WebCore::UserMediaClientImpl::requestUserMedia):
(WebCore::UserMediaClientImpl::cancelUserMediaRequest):
* WebCoreSupport/UserMediaClientImpl.h: Added.
(WebKit):
(WebCore):
(UserMediaClientImpl):

Tools:

* Scripts/webkitperl/FeatureList.pm:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@120188 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/ChangeLog b/ChangeLog
index d0cd441..2575bd1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2012-06-13  Robin Cao  <robin.cao@torchmobile.com.cn>
+
+        [BlackBerry] Enable MEDIA_STREAM by default
+        https://bugs.webkit.org/show_bug.cgi?id=88849
+
+        Reviewed by Antonio Gomes.
+
+        * Source/cmake/OptionsBlackBerry.cmake:
+        * Source/cmakeconfig.h.cmake:
+
 2012-06-12  MORITA Hajime  <morrita@google.com>
 
         Shadow Pseudo ID should be able to nest to point nested shadow DOM.
diff --git a/Source/WebCore/CMakeLists.txt b/Source/WebCore/CMakeLists.txt
index 5bd5b00..f35941c 100644
--- a/Source/WebCore/CMakeLists.txt
+++ b/Source/WebCore/CMakeLists.txt
@@ -2447,6 +2447,56 @@
     )
 ENDIF ()
 
+IF (ENABLE_MEDIA_STREAM)
+    LIST(APPEND WebCore_INCLUDE_DIRECTORIES
+        ${WEBCORE_DIR}/Modules/mediastream
+        ${WEBCORE_DIR}/platform/mediastream
+    )
+    LIST(APPEND WebCore_IDL_FILES
+        Modules/mediastream/DeprecatedPeerConnection.idl
+        Modules/mediastream/DOMWindowMediaStream.idl
+        Modules/mediastream/IceCallback.idl
+        Modules/mediastream/IceCandidate.idl
+        Modules/mediastream/LocalMediaStream.idl
+        Modules/mediastream/MediaStream.idl
+        Modules/mediastream/MediaStreamEvent.idl
+        Modules/mediastream/MediaStreamList.idl
+        Modules/mediastream/MediaStreamTrack.idl
+        Modules/mediastream/MediaStreamTrackList.idl
+        Modules/mediastream/NavigatorMediaStream.idl
+        Modules/mediastream/NavigatorUserMediaError.idl
+        Modules/mediastream/NavigatorUserMediaErrorCallback.idl
+        Modules/mediastream/NavigatorUserMediaSuccessCallback.idl
+        Modules/mediastream/PeerConnection00.idl
+        Modules/mediastream/SessionDescription.idl
+        Modules/mediastream/SignalingCallback.idl
+    )
+    LIST(APPEND WebCore_SOURCES
+        Modules/mediastream/DeprecatedPeerConnection.cpp
+        Modules/mediastream/IceCandidate.cpp
+        Modules/mediastream/LocalMediaStream.cpp
+        Modules/mediastream/MediaStream.cpp
+        Modules/mediastream/MediaStreamEvent.cpp
+        Modules/mediastream/MediaStreamList.cpp
+        Modules/mediastream/MediaStreamRegistry.cpp
+        Modules/mediastream/MediaStreamTrack.cpp
+        Modules/mediastream/MediaStreamTrackList.cpp
+        Modules/mediastream/NavigatorMediaStream.cpp
+        Modules/mediastream/PeerConnection00.cpp
+        Modules/mediastream/SessionDescription.cpp
+        Modules/mediastream/UserMediaController.cpp
+        Modules/mediastream/UserMediaRequest.cpp
+
+        bindings/js/JSDeprecatedPeerConnectionCustom.cpp
+        platform/mediastream/IceCandidateDescriptor.cpp
+        platform/mediastream/IceOptions.cpp
+        platform/mediastream/MediaHints.cpp
+        platform/mediastream/MediaStreamCenter.cpp
+        platform/mediastream/PeerConnection00Handler.cpp
+        platform/mediastream/SessionDescriptionDescriptor.cpp
+    )
+ENDIF ()
+
 IF (ENABLE_WEB_AUDIO)
     LIST(APPEND WebCore_SOURCES
         Modules/webaudio/AsyncAudioDecoder.cpp
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 729d4b8..8781913 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,39 @@
+2012-06-13  Robin Cao  <robin.cao@torchmobile.com.cn>
+
+        [BlackBerry] Enable MEDIA_STREAM by default
+        https://bugs.webkit.org/show_bug.cgi?id=88849
+
+        Reviewed by Antonio Gomes.
+
+        Covered by existing test cases.
+
+        * CMakeLists.txt:
+        * PlatformBlackBerry.cmake:
+        * platform/mediastream/blackberry/DeprecatedPeerConnectionHandler.cpp: Added.
+        (WebCore):
+        (WebCore::DeprecatedPeerConnectionHandler::create):
+        (WebCore::DeprecatedPeerConnectionHandler::DeprecatedPeerConnectionHandler):
+        (WebCore::DeprecatedPeerConnectionHandler::~DeprecatedPeerConnectionHandler):
+        (WebCore::DeprecatedPeerConnectionHandler::produceInitialOffer):
+        (WebCore::DeprecatedPeerConnectionHandler::handleInitialOffer):
+        (WebCore::DeprecatedPeerConnectionHandler::processSDP):
+        (WebCore::DeprecatedPeerConnectionHandler::processPendingStreams):
+        (WebCore::DeprecatedPeerConnectionHandler::sendDataStreamMessage):
+        (WebCore::DeprecatedPeerConnectionHandler::stop):
+        * platform/mediastream/blackberry/MediaStreamCenterBlackBerry.cpp: Added.
+        (WebCore):
+        (WebCore::MediaStreamCenter::instance):
+        (WebCore::MediaStreamCenterBlackBerry::MediaStreamCenterBlackBerry):
+        (WebCore::MediaStreamCenterBlackBerry::~MediaStreamCenterBlackBerry):
+        (WebCore::MediaStreamCenterBlackBerry::queryMediaStreamSources):
+        (WebCore::MediaStreamCenterBlackBerry::didSetMediaStreamTrackEnabled):
+        (WebCore::MediaStreamCenterBlackBerry::didStopLocalMediaStream):
+        (WebCore::MediaStreamCenterBlackBerry::didCreateMediaStream):
+        (WebCore::MediaStreamCenterBlackBerry::constructSDP):
+        * platform/mediastream/blackberry/MediaStreamCenterBlackBerry.h: Added.
+        (WebCore):
+        (MediaStreamCenterBlackBerry):
+
 2012-06-13  Pavel Feldman  <pfeldman@chromium.org>
 
         Web Inspector: working copy should be committed even if domain binding returns error.
diff --git a/Source/WebCore/PlatformBlackBerry.cmake b/Source/WebCore/PlatformBlackBerry.cmake
index f2d08e9..d9823c9 100644
--- a/Source/WebCore/PlatformBlackBerry.cmake
+++ b/Source/WebCore/PlatformBlackBerry.cmake
@@ -229,6 +229,13 @@
     )
 ENDIF ()
 
+if (ENABLE_MEDIA_STREAM)
+    LIST(APPEND WebCore_SOURCES
+        platform/mediastream/blackberry/DeprecatedPeerConnectionHandler.cpp
+        platform/mediastream/blackberry/MediaStreamCenterBlackBerry.cpp
+    )
+ENDIF ()
+
 IF (ENABLE_NETSCAPE_PLUGIN_API)
     LIST(APPEND WebCore_SOURCES
         plugins/PluginDatabase.cpp
diff --git a/Source/WebCore/platform/mediastream/blackberry/DeprecatedPeerConnectionHandler.cpp b/Source/WebCore/platform/mediastream/blackberry/DeprecatedPeerConnectionHandler.cpp
new file mode 100644
index 0000000..d6e3d58
--- /dev/null
+++ b/Source/WebCore/platform/mediastream/blackberry/DeprecatedPeerConnectionHandler.cpp
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2011 Ericsson AB. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. 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.
+ * 3. Neither the name of Ericsson 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.
+ */
+
+#include "config.h"
+
+#if ENABLE(MEDIA_STREAM)
+
+#include "DeprecatedPeerConnectionHandler.h"
+
+#include "DeprecatedPeerConnectionHandlerClient.h"
+
+namespace WebCore {
+
+PassOwnPtr<DeprecatedPeerConnectionHandler> DeprecatedPeerConnectionHandler::create(DeprecatedPeerConnectionHandlerClient* client, const String& serverConfiguration, const String& username)
+{
+    return adoptPtr(new DeprecatedPeerConnectionHandler(client, serverConfiguration, username));
+}
+
+// Empty implementations for ports that build with MEDIA_STREAM enabled by default.
+DeprecatedPeerConnectionHandler::DeprecatedPeerConnectionHandler(DeprecatedPeerConnectionHandlerClient*, const String&, const String&)
+{
+}
+
+DeprecatedPeerConnectionHandler::~DeprecatedPeerConnectionHandler()
+{
+}
+
+void DeprecatedPeerConnectionHandler::produceInitialOffer(const MediaStreamDescriptorVector&)
+{
+}
+
+void DeprecatedPeerConnectionHandler::handleInitialOffer(const String&)
+{
+}
+
+void DeprecatedPeerConnectionHandler::processSDP(const String&)
+{
+}
+
+void DeprecatedPeerConnectionHandler::processPendingStreams(const MediaStreamDescriptorVector&, const MediaStreamDescriptorVector&)
+{
+}
+
+void DeprecatedPeerConnectionHandler::sendDataStreamMessage(const char*, size_t)
+{
+}
+
+void DeprecatedPeerConnectionHandler::stop()
+{
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(MEDIA_STREAM)
diff --git a/Source/WebCore/platform/mediastream/blackberry/MediaStreamCenterBlackBerry.cpp b/Source/WebCore/platform/mediastream/blackberry/MediaStreamCenterBlackBerry.cpp
new file mode 100644
index 0000000..c82fc7a
--- /dev/null
+++ b/Source/WebCore/platform/mediastream/blackberry/MediaStreamCenterBlackBerry.cpp
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2011 Ericsson AB. All rights reserved.
+ * Copyright (C) 2012 Research In Motion Limited. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. 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.
+ * 3. Neither the name of Ericsson 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.
+ */
+
+#include "config.h"
+
+#if ENABLE(MEDIA_STREAM)
+
+#include "MediaStreamCenterBlackBerry.h"
+
+#include "IceCandidateDescriptor.h"
+#include "MediaStreamDescriptor.h"
+#include "MediaStreamSourcesQueryClient.h"
+#include "SessionDescriptionDescriptor.h"
+#include <wtf/MainThread.h>
+
+namespace WebCore {
+
+MediaStreamCenter& MediaStreamCenter::instance()
+{
+    ASSERT(isMainThread());
+    DEFINE_STATIC_LOCAL(MediaStreamCenterBlackBerry, center, ());
+    return center;
+}
+
+MediaStreamCenterBlackBerry::MediaStreamCenterBlackBerry()
+{
+}
+
+MediaStreamCenterBlackBerry::~MediaStreamCenterBlackBerry()
+{
+}
+
+void MediaStreamCenterBlackBerry::queryMediaStreamSources(PassRefPtr<MediaStreamSourcesQueryClient> client)
+{
+    MediaStreamSourceVector audioSources, videoSources;
+    client->didCompleteQuery(audioSources, videoSources);
+}
+
+void MediaStreamCenterBlackBerry::didSetMediaStreamTrackEnabled(MediaStreamDescriptor*, MediaStreamComponent*)
+{
+}
+
+void MediaStreamCenterBlackBerry::didStopLocalMediaStream(MediaStreamDescriptor*)
+{
+}
+
+void MediaStreamCenterBlackBerry::didCreateMediaStream(MediaStreamDescriptor*)
+{
+}
+
+String MediaStreamCenterBlackBerry::constructSDP(IceCandidateDescriptor*)
+{
+    return "";
+}
+
+String MediaStreamCenterBlackBerry::constructSDP(SessionDescriptionDescriptor*)
+{
+    return "";
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(MEDIA_STREAM)
diff --git a/Source/WebCore/platform/mediastream/blackberry/MediaStreamCenterBlackBerry.h b/Source/WebCore/platform/mediastream/blackberry/MediaStreamCenterBlackBerry.h
new file mode 100644
index 0000000..9724c0e
--- /dev/null
+++ b/Source/WebCore/platform/mediastream/blackberry/MediaStreamCenterBlackBerry.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2011 Ericsson AB. All rights reserved.
+ * Copyright (C) 2012 Research In Motion Limited. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. 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.
+ * 3. Neither the name of Ericsson 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 MediaStreamCenterBlackBerry_h
+#define MediaStreamCenterBlackBerry_h
+
+#if ENABLE(MEDIA_STREAM)
+
+#include "MediaStreamCenter.h"
+
+#include <wtf/PassRefPtr.h>
+#include <wtf/text/WTFString.h>
+
+namespace WebCore {
+
+class IceCandidateDescriptor;
+class MediaStreamComponent;
+class MediaStreamDescriptor;
+class MediaStreamSourcesQueryClient;
+class SessionDescriptionDescriptor;
+
+class MediaStreamCenterBlackBerry : public MediaStreamCenter {
+public:
+    MediaStreamCenterBlackBerry();
+    ~MediaStreamCenterBlackBerry();
+
+    // MediaStreamCenter
+    virtual void queryMediaStreamSources(PassRefPtr<MediaStreamSourcesQueryClient>) OVERRIDE;
+    virtual void didSetMediaStreamTrackEnabled(MediaStreamDescriptor*, MediaStreamComponent*) OVERRIDE;
+    virtual void didStopLocalMediaStream(MediaStreamDescriptor*) OVERRIDE;
+    virtual void didCreateMediaStream(MediaStreamDescriptor*) OVERRIDE;
+    virtual String constructSDP(IceCandidateDescriptor*) OVERRIDE;
+    virtual String constructSDP(SessionDescriptionDescriptor*) OVERRIDE;
+};
+
+} // namespace WebCore
+
+#endif // ENABLE(MEDIA_STREAM)
+
+#endif // MediaStreamCenterBlackBerry_h
diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog
index a8bf7a7..ec83885 100644
--- a/Source/WebKit/ChangeLog
+++ b/Source/WebKit/ChangeLog
@@ -1,3 +1,12 @@
+2012-06-13  Robin Cao  <robin.cao@torchmobile.com.cn>
+
+        [BlackBerry] Enable MEDIA_STREAM by default
+        https://bugs.webkit.org/show_bug.cgi?id=88849
+
+        Reviewed by Antonio Gomes.
+
+        * PlatformBlackBerry.cmake:
+
 2012-06-12  Christophe Dumez  <christophe.dumez@intel.com>
 
         [EFL] Enable SHADOW_DOM flag
diff --git a/Source/WebKit/PlatformBlackBerry.cmake b/Source/WebKit/PlatformBlackBerry.cmake
index b562027..e3512f6 100644
--- a/Source/WebKit/PlatformBlackBerry.cmake
+++ b/Source/WebKit/PlatformBlackBerry.cmake
@@ -42,6 +42,16 @@
     LIST(APPEND WebKit_SOURCES blackberry/WebCoreSupport/BatteryClientBlackBerry.cpp)
 ENDIF ()
 
+IF (ENABLE_MEDIA_STREAM)
+    LIST(APPEND WebKit_INCLUDE_DIRECTORIES
+        "${WEBCORE_DIR}/Modules/mediastream"
+        "${WEBCORE_DIR}/platform/mediastream"
+    )
+    LIST(APPEND WebKit_SOURCES
+        blackberry/WebCoreSupport/UserMediaClientImpl.cpp
+    )
+ENDIF ()
+
 ADD_DEFINITIONS(-DUSER_PROCESSES)
 
 LIST(APPEND WebKit_SOURCES
diff --git a/Source/WebKit/blackberry/Api/WebPage.cpp b/Source/WebKit/blackberry/Api/WebPage.cpp
index 9287cb3..ebca8f7 100644
--- a/Source/WebKit/blackberry/Api/WebPage.cpp
+++ b/Source/WebKit/blackberry/Api/WebPage.cpp
@@ -114,6 +114,9 @@
 #include "ThreadCheck.h"
 #include "TouchEventHandler.h"
 #include "TransformationMatrix.h"
+#if ENABLE(MEDIA_STREAM)
+#include "UserMediaClientImpl.h"
+#endif
 #if ENABLE(VIBRATION)
 #include "VibrationClientBlackBerry.h"
 #endif
@@ -510,6 +513,10 @@
     WebCore::provideBatteryTo(m_page, new WebCore::BatteryClientBlackBerry);
 #endif
 
+#if ENABLE(MEDIA_STREAM)
+    WebCore::provideUserMediaTo(m_page, new UserMediaClientImpl(m_webPage));
+#endif
+
 #if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
     WebCore::provideNotification(m_page, NotificationPresenterImpl::instance());
 #endif
diff --git a/Source/WebKit/blackberry/ChangeLog b/Source/WebKit/blackberry/ChangeLog
index a5219a7..2f0d0de 100644
--- a/Source/WebKit/blackberry/ChangeLog
+++ b/Source/WebKit/blackberry/ChangeLog
@@ -1,3 +1,24 @@
+2012-06-13  Robin Cao  <robin.cao@torchmobile.com.cn>
+
+        [BlackBerry] Enable MEDIA_STREAM by default
+        https://bugs.webkit.org/show_bug.cgi?id=88849
+
+        Reviewed by Antonio Gomes.
+
+        * Api/WebPage.cpp:
+        (BlackBerry::WebKit::WebPagePrivate::init):
+        * WebCoreSupport/UserMediaClientImpl.cpp: Added.
+        (WebCore):
+        (WebCore::UserMediaClientImpl::UserMediaClientImpl):
+        (WebCore::UserMediaClientImpl::~UserMediaClientImpl):
+        (WebCore::UserMediaClientImpl::pageDestroyed):
+        (WebCore::UserMediaClientImpl::requestUserMedia):
+        (WebCore::UserMediaClientImpl::cancelUserMediaRequest):
+        * WebCoreSupport/UserMediaClientImpl.h: Added.
+        (WebKit):
+        (WebCore):
+        (UserMediaClientImpl):
+
 2012-06-12  Arvid Nilsson  <anilsson@rim.com>
 
         [BlackBerry] Crash when rendering web page that's being destroyed
diff --git a/Source/WebKit/blackberry/WebCoreSupport/UserMediaClientImpl.cpp b/Source/WebKit/blackberry/WebCoreSupport/UserMediaClientImpl.cpp
new file mode 100644
index 0000000..57f0fe7
--- /dev/null
+++ b/Source/WebKit/blackberry/WebCoreSupport/UserMediaClientImpl.cpp
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2012 Research In Motion Limited. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#include "config.h"
+#include "UserMediaClientImpl.h"
+
+#if ENABLE(MEDIA_STREAM)
+#include "WebPage.h"
+
+#include <wtf/RefPtr.h>
+
+namespace WebCore {
+
+UserMediaClientImpl::UserMediaClientImpl(BlackBerry::WebKit::WebPage*)
+{
+}
+
+UserMediaClientImpl::~UserMediaClientImpl()
+{
+}
+
+void UserMediaClientImpl::pageDestroyed()
+{
+}
+
+void UserMediaClientImpl::requestUserMedia(PassRefPtr<UserMediaRequest> prpRequest, const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources)
+{
+}
+
+void UserMediaClientImpl::cancelUserMediaRequest(UserMediaRequest*)
+{
+}
+
+}
+
+#endif
diff --git a/Source/WebKit/blackberry/WebCoreSupport/UserMediaClientImpl.h b/Source/WebKit/blackberry/WebCoreSupport/UserMediaClientImpl.h
new file mode 100644
index 0000000..6a9a017
--- /dev/null
+++ b/Source/WebKit/blackberry/WebCoreSupport/UserMediaClientImpl.h
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2012 Research In Motion Limited. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifndef UserMediaClientImpl_h
+#define UserMediaClientImpl_h
+
+#if ENABLE(MEDIA_STREAM)
+
+#include "MediaStreamSource.h"
+#include "UserMediaClient.h"
+
+#include <wtf/PassRefPtr.h>
+
+namespace BlackBerry {
+namespace WebKit {
+class WebPage;
+}
+}
+
+namespace WebCore {
+
+class UserMediaRequest;
+
+class UserMediaClientImpl : public WebCore::UserMediaClient {
+public:
+    UserMediaClientImpl(BlackBerry::WebKit::WebPage*);
+    ~UserMediaClientImpl();
+
+    void pageDestroyed();
+    void requestUserMedia(PassRefPtr<WebCore::UserMediaRequest>, const WebCore::MediaStreamSourceVector& audioSources, const WebCore::MediaStreamSourceVector& videoSources);
+    void cancelUserMediaRequest(WebCore::UserMediaRequest*);
+
+private:
+    UserMediaClientImpl();
+};
+
+}
+
+#endif
+#endif
diff --git a/Source/cmake/OptionsBlackBerry.cmake b/Source/cmake/OptionsBlackBerry.cmake
index b0e504c..0ec451b 100644
--- a/Source/cmake/OptionsBlackBerry.cmake
+++ b/Source/cmake/OptionsBlackBerry.cmake
@@ -145,6 +145,7 @@
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_COLOR ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_LEGACY_NOTIFICATIONS ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_LEGACY_WEBKIT_BLOB_BUILDER ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_STREAM ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NOTIFICATIONS ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ORIENTATION_EVENTS ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_PAGE_POPUP ON)
diff --git a/Source/cmakeconfig.h.cmake b/Source/cmakeconfig.h.cmake
index 118498d..7237c18 100644
--- a/Source/cmakeconfig.h.cmake
+++ b/Source/cmakeconfig.h.cmake
@@ -51,6 +51,7 @@
 #cmakedefine01 ENABLE_LEGACY_NOTIFICATIONS
 #cmakedefine01 ENABLE_LEGACY_WEBKIT_BLOB_BUILDER
 #cmakedefine01 ENABLE_MATHML
+#cmakedefine01 ENABLE_MEDIA_STREAM
 #cmakedefine01 ENABLE_METER_TAG
 #cmakedefine01 ENABLE_MICRODATA
 #cmakedefine01 ENABLE_MUTATION_OBSERVERS
diff --git a/Tools/ChangeLog b/Tools/ChangeLog
index dfedd6d..b12ec5e 100644
--- a/Tools/ChangeLog
+++ b/Tools/ChangeLog
@@ -1,3 +1,12 @@
+2012-06-13  Robin Cao  <robin.cao@torchmobile.com.cn>
+
+        [BlackBerry] Enable MEDIA_STREAM by default
+        https://bugs.webkit.org/show_bug.cgi?id=88849
+
+        Reviewed by Antonio Gomes.
+
+        * Scripts/webkitperl/FeatureList.pm:
+
 2012-06-13  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>
 
         Prevent stderr output from messing up detection of build path
diff --git a/Tools/Scripts/webkitperl/FeatureList.pm b/Tools/Scripts/webkitperl/FeatureList.pm
index 187eb78..f89c826 100644
--- a/Tools/Scripts/webkitperl/FeatureList.pm
+++ b/Tools/Scripts/webkitperl/FeatureList.pm
@@ -279,7 +279,7 @@
       define => "ENABLE_MEDIA_STATISTICS", default => 0, value => \$mediaStatisticsSupport },
 
     { option => "media-stream", desc => "Toggle Media Stream support",
-      define => "ENABLE_MEDIA_STREAM", default => (isChromium() || isGtk()), value => \$mediaStreamSupport },
+      define => "ENABLE_MEDIA_STREAM", default => (isChromium() || isGtk() || isBlackBerry()), value => \$mediaStreamSupport },
 
     { option => "meter-tag", desc => "Toggle Meter Tag support",
       define => "ENABLE_METER_TAG", default => !isAppleWinWebKit(), value => \$meterTagSupport },