Changeset 108437 in webkit


Ignore:
Timestamp:
Feb 21, 2012 7:56:43 PM (12 years ago)
Author:
morrita@google.com
Message:

MEDIA_STREAM should be implemented as a PageSupplement.
https://bugs.webkit.org/show_bug.cgi?id=79050

Reviewed by Adam Barth.

Source/WebCore:

Added UserMediaController which implements PageSupplement. This
controller mediates WebCore-to-client communication and lifecycle
management. Then pushed UserMediaController out as a
PageSupplement module.

No new tests. No behavior change.

  • WebCore.gypi:
  • GNUmakefile.list.am:
  • mediastream/NavigatorMediaStream.cpp:

(WebCore::NavigatorMediaStream::webkitGetUserMedia):

  • mediastream/UserMediaClient.h:

(WebCore):

  • mediastream/UserMediaController.cpp: Added.

(WebCore):
(WebCore::UserMediaController::supplementName):
(WebCore::UserMediaController::UserMediaController):
(WebCore::UserMediaController::~UserMediaController):
(WebCore::UserMediaController::create):
(WebCore::provideUserMediaTo):

  • mediastream/UserMediaController.h: Added.

(WebCore):
(UserMediaController):
(WebCore::UserMediaController::client):
(WebCore::UserMediaController::from):
(WebCore::UserMediaController::requestUserMedia):
(WebCore::UserMediaController::cancelUserMediaRequest):

  • mediastream/UserMediaRequest.cpp:

(WebCore::UserMediaRequest::create):
(WebCore::UserMediaRequest::UserMediaRequest):
(WebCore::UserMediaRequest::didCompleteQuery):
(WebCore::UserMediaRequest::contextDestroyed):

  • mediastream/UserMediaRequest.h:

(WebCore):
(UserMediaRequest):

  • page/Page.cpp:

(WebCore::Page::Page):
(WebCore::Page::~Page):
(WebCore::Page::PageClients::PageClients):

  • page/Page.h:

(WebCore):
(PageClients):
(Page):

Source/WebKit/chromium:

  • src/WebViewImpl.cpp:

(WebKit::WebViewImpl::WebViewImpl):

Location:
trunk/Source
Files:
2 added
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r108436 r108437  
     12012-02-20  MORITA Hajime  <morrita@google.com>
     2
     3        MEDIA_STREAM should be implemented as a PageSupplement.
     4        https://bugs.webkit.org/show_bug.cgi?id=79050
     5
     6        Reviewed by Adam Barth.
     7
     8        Added UserMediaController which implements PageSupplement. This
     9        controller mediates WebCore-to-client communication and lifecycle
     10        management. Then pushed UserMediaController out as a
     11        PageSupplement module.
     12
     13        No new tests. No behavior change.
     14
     15        * WebCore.gypi:
     16        * GNUmakefile.list.am:
     17        * mediastream/NavigatorMediaStream.cpp:
     18        (WebCore::NavigatorMediaStream::webkitGetUserMedia):
     19        * mediastream/UserMediaClient.h:
     20        (WebCore):
     21        * mediastream/UserMediaController.cpp: Added.
     22        (WebCore):
     23        (WebCore::UserMediaController::supplementName):
     24        (WebCore::UserMediaController::UserMediaController):
     25        (WebCore::UserMediaController::~UserMediaController):
     26        (WebCore::UserMediaController::create):
     27        (WebCore::provideUserMediaTo):
     28        * mediastream/UserMediaController.h: Added.
     29        (WebCore):
     30        (UserMediaController):
     31        (WebCore::UserMediaController::client):
     32        (WebCore::UserMediaController::from):
     33        (WebCore::UserMediaController::requestUserMedia):
     34        (WebCore::UserMediaController::cancelUserMediaRequest):
     35        * mediastream/UserMediaRequest.cpp:
     36        (WebCore::UserMediaRequest::create):
     37        (WebCore::UserMediaRequest::UserMediaRequest):
     38        (WebCore::UserMediaRequest::didCompleteQuery):
     39        (WebCore::UserMediaRequest::contextDestroyed):
     40        * mediastream/UserMediaRequest.h:
     41        (WebCore):
     42        (UserMediaRequest):
     43        * page/Page.cpp:
     44        (WebCore::Page::Page):
     45        (WebCore::Page::~Page):
     46        (WebCore::Page::PageClients::PageClients):
     47        * page/Page.h:
     48        (WebCore):
     49        (PageClients):
     50        (Page):
     51
    1522012-02-21  James Robinson  <jamesr@chromium.org>
    253
  • trunk/Source/WebCore/GNUmakefile.list.am

    r108428 r108437  
    26432643        Source/WebCore/mediastream/SignalingCallback.h \
    26442644        Source/WebCore/mediastream/UserMediaClient.h \
     2645        Source/WebCore/mediastream/UserMediaController.h \
     2646        Source/WebCore/mediastream/UserMediaController.cpp \
    26452647        Source/WebCore/mediastream/UserMediaRequest.cpp \
    26462648        Source/WebCore/mediastream/UserMediaRequest.h \
  • trunk/Source/WebCore/WebCore.gypi

    r108428 r108437  
    25902590            'mediastream/SignalingCallback.h',
    25912591            'mediastream/UserMediaClient.h',
     2592            'mediastream/UserMediaController.h',
     2593            'mediastream/UserMediaController.cpp',
    25922594            'mediastream/UserMediaRequest.cpp',
    25932595            'mediastream/UserMediaRequest.h',
  • trunk/Source/WebCore/mediastream/NavigatorMediaStream.cpp

    r107541 r108437  
    3636#include "NavigatorUserMediaSuccessCallback.h"
    3737#include "Page.h"
     38#include "UserMediaController.h"
    3839#include "UserMediaRequest.h"
    3940
     
    5354        return;
    5455
    55     Frame* frame = navigator->frame();
    56     if (!frame)
     56    UserMediaController* userMedia = UserMediaController::from(navigator->frame());
     57    if (!userMedia) {
     58        ec = NOT_SUPPORTED_ERR;
    5759        return;
     60    }
    5861
    59     Page* page = frame->page();
    60     if (!page)
    61         return;
    62 
    63     RefPtr<UserMediaRequest> request = UserMediaRequest::create(frame->document(), page->userMediaClient(), options, successCallback, errorCallback);
     62    RefPtr<UserMediaRequest> request = UserMediaRequest::create(navigator->frame()->document(), userMedia, options, successCallback, errorCallback);
    6463    if (!request) {
    6564        ec = NOT_SUPPORTED_ERR;
  • trunk/Source/WebCore/mediastream/UserMediaClient.h

    r106581 r108437  
    3939namespace WebCore {
    4040
     41class Page;
     42
    4143class UserMediaClient {
    4244public:
     
    5052};
    5153
     54void provideUserMediaTo(Page*, UserMediaClient*);
     55
    5256} // namespace WebCore
    5357
  • trunk/Source/WebCore/mediastream/UserMediaRequest.cpp

    r106581 r108437  
    3737#include "LocalMediaStream.h"
    3838#include "SpaceSplitString.h"
    39 #include "UserMediaClient.h"
     39#include "UserMediaController.h"
    4040
    4141namespace WebCore {
    4242
    43 PassRefPtr<UserMediaRequest> UserMediaRequest::create(ScriptExecutionContext* context, UserMediaClient* client, const String& options, PassRefPtr<NavigatorUserMediaSuccessCallback> successCallback, PassRefPtr<NavigatorUserMediaErrorCallback> errorCallback)
     43PassRefPtr<UserMediaRequest> UserMediaRequest::create(ScriptExecutionContext* context, UserMediaController* controller, const String& options, PassRefPtr<NavigatorUserMediaSuccessCallback> successCallback, PassRefPtr<NavigatorUserMediaErrorCallback> errorCallback)
    4444{
    45     RefPtr<UserMediaRequest> request = adoptRef(new UserMediaRequest(context, client, options, successCallback, errorCallback));
     45    RefPtr<UserMediaRequest> request = adoptRef(new UserMediaRequest(context, controller, options, successCallback, errorCallback));
    4646    if (!request->audio() && !request->video())
    4747        return 0;
     
    5050}
    5151
    52 UserMediaRequest::UserMediaRequest(ScriptExecutionContext* context, UserMediaClient* client, const String& options, PassRefPtr<NavigatorUserMediaSuccessCallback> successCallback, PassRefPtr<NavigatorUserMediaErrorCallback> errorCallback)
     52UserMediaRequest::UserMediaRequest(ScriptExecutionContext* context, UserMediaController* controller, const String& options, PassRefPtr<NavigatorUserMediaSuccessCallback> successCallback, PassRefPtr<NavigatorUserMediaErrorCallback> errorCallback)
    5353    : ContextDestructionObserver(context)
    5454    , m_audio(false)
     
    5656    , m_cameraPreferenceUser(false)
    5757    , m_cameraPreferenceEnvironment(false)
    58     , m_client(client)
     58    , m_controller(controller)
    5959    , m_successCallback(successCallback)
    6060    , m_errorCallback(errorCallback)
     
    7474void UserMediaRequest::didCompleteQuery(const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources)
    7575{
    76     if (m_client)
    77         m_client->requestUserMedia(this, audioSources, videoSources);
     76    if (m_controller)
     77        m_controller->requestUserMedia(this, audioSources, videoSources);
    7878}
    7979
     
    100100void UserMediaRequest::contextDestroyed()
    101101{
    102     if (m_client) {
    103         m_client->cancelUserMediaRequest(this);
    104         m_client = 0;
     102    if (m_controller) {
     103        m_controller->cancelUserMediaRequest(this);
     104        m_controller = 0;
    105105    }
    106106
  • trunk/Source/WebCore/mediastream/UserMediaRequest.h

    r106581 r108437  
    4545namespace WebCore {
    4646
    47 class UserMediaClient;
     47class UserMediaController;
    4848
    4949class UserMediaRequest : public MediaStreamSourcesQueryClient, public ContextDestructionObserver {
    5050public:
    51     static PassRefPtr<UserMediaRequest> create(ScriptExecutionContext*, UserMediaClient*, const String& options, PassRefPtr<NavigatorUserMediaSuccessCallback>, PassRefPtr<NavigatorUserMediaErrorCallback>);
     51    static PassRefPtr<UserMediaRequest> create(ScriptExecutionContext*, UserMediaController*, const String& options, PassRefPtr<NavigatorUserMediaSuccessCallback>, PassRefPtr<NavigatorUserMediaErrorCallback>);
    5252    ~UserMediaRequest();
    5353
     
    7171
    7272private:
    73     UserMediaRequest(ScriptExecutionContext*, UserMediaClient*, const String& options, PassRefPtr<NavigatorUserMediaSuccessCallback>, PassRefPtr<NavigatorUserMediaErrorCallback>);
     73    UserMediaRequest(ScriptExecutionContext*, UserMediaController*, const String& options, PassRefPtr<NavigatorUserMediaSuccessCallback>, PassRefPtr<NavigatorUserMediaErrorCallback>);
    7474
    7575    void parseOptions(const String& options);
     
    8181    bool m_cameraPreferenceEnvironment;
    8282
    83     UserMediaClient* m_client;
     83    UserMediaController* m_controller;
    8484
    8585    RefPtr<NavigatorUserMediaSuccessCallback> m_successCallback;
  • trunk/Source/WebCore/page/Page.cpp

    r108428 r108437  
    8383#endif
    8484
    85 #if ENABLE(MEDIA_STREAM)
    86 #include "UserMediaClient.h"
    87 #endif
    88 
    8985namespace WebCore {
    9086
     
    144140#if ENABLE(INPUT_SPEECH)
    145141    , m_speechInputClient(pageClients.speechInputClient)
    146 #endif
    147 #if ENABLE(MEDIA_STREAM)
    148     , m_userMediaClient(pageClients.userMediaClient)
    149142#endif
    150143    , m_settings(Settings::create(this))
     
    209202#endif
    210203
    211 #if ENABLE(MEDIA_STREAM)
    212     if (m_userMediaClient)
    213         m_userMediaClient->pageDestroyed();
    214 #endif
    215 
    216204    if (m_scrollingCoordinator)
    217205        m_scrollingCoordinator->pageDestroyed();
     
    10991087    , speechInputClient(0)
    11001088    , notificationClient(0)
    1101     , userMediaClient(0)
    11021089{
    11031090}
  • trunk/Source/WebCore/page/Page.h

    r108140 r108437  
    8686    class SpeechInput;
    8787    class SpeechInputClient;
    88     class UserMediaClient;
    8988    class StorageNamespace;
    9089#if ENABLE(NOTIFICATIONS)
     
    120119            SpeechInputClient* speechInputClient;
    121120            NotificationPresenter* notificationClient;
    122             UserMediaClient* userMediaClient;
    123121        };
    124122
     
    189187#if ENABLE(INPUT_SPEECH)
    190188        SpeechInput* speechInput();
    191 #endif
    192 #if ENABLE(MEDIA_STREAM)
    193         UserMediaClient* userMediaClient() const { return m_userMediaClient; }
    194189#endif
    195190        ScrollingCoordinator* scrollingCoordinator();
     
    390385        OwnPtr<SpeechInput> m_speechInput;
    391386#endif
    392 #if ENABLE(MEDIA_STREAM)
    393         UserMediaClient* m_userMediaClient;
    394 #endif
    395387        RefPtr<ScrollingCoordinator> m_scrollingCoordinator;
    396388
  • trunk/Source/WebKit/chromium/ChangeLog

    r108431 r108437  
     12012-02-20  MORITA Hajime  <morrita@google.com>
     2
     3        MEDIA_STREAM should be implemented as a PageSupplement.
     4        https://bugs.webkit.org/show_bug.cgi?id=79050
     5
     6        Reviewed by Adam Barth.
     7
     8        * src/WebViewImpl.cpp:
     9        (WebKit::WebViewImpl::WebViewImpl):
     10
    1112012-02-21  Dana Jansens  <danakj@chromium.org>
    212
  • trunk/Source/WebKit/chromium/src/WebViewImpl.cpp

    r108031 r108437  
    406406#endif
    407407    pageClients.backForwardClient = BackForwardListChromium::create(this);
     408
     409    m_page = adoptPtr(new Page(pageClients));
    408410#if ENABLE(MEDIA_STREAM)
    409     pageClients.userMediaClient = &m_userMediaClientImpl;
    410 #endif
    411 
    412     m_page = adoptPtr(new Page(pageClients));
     411    provideUserMediaTo(m_page.get(), &m_userMediaClientImpl);
     412#endif
    413413    provideDeviceOrientationTo(m_page.get(), m_deviceOrientationClientProxy.get());
    414414    m_geolocationClientProxy->setController(m_page->geolocationController());
Note: See TracChangeset for help on using the changeset viewer.