Changeset 221466 in webkit


Ignore:
Timestamp:
Aug 31, 2017, 6:47:33 PM (8 years ago)
Author:
achristensen@apple.com
Message:

Add WKUIDelegatePrivate equivalent of WKPageUIClient's isPlayingAudioDidChange
https://bugs.webkit.org/show_bug.cgi?id=176203
<rdar://problem/29270035>

Reviewed by Tim Horton.

Source/WebKit:

  • UIProcess/API/APIUIClient.h:

(API::UIClient::isPlayingMediaDidChange):
(API::UIClient::isPlayingAudioDidChange): Deleted.

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageUIClient):

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::isPlayingMediaDidChange):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::isPlayingMediaDidChange):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:

(-[MediaDelegate _webView:isPlayingMediaDidChange:]):
(-[MediaDelegate webView:didFinishNavigation:]):
(TEST):

Location:
trunk
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r221465 r221466  
     12017-08-31  Alex Christensen  <achristensen@webkit.org>
     2
     3        Add WKUIDelegatePrivate equivalent of WKPageUIClient's isPlayingAudioDidChange
     4        https://bugs.webkit.org/show_bug.cgi?id=176203
     5        <rdar://problem/29270035>
     6
     7        Reviewed by Tim Horton.
     8
     9        * UIProcess/API/APIUIClient.h:
     10        (API::UIClient::isPlayingMediaDidChange):
     11        (API::UIClient::isPlayingAudioDidChange): Deleted.
     12        * UIProcess/API/C/WKPage.cpp:
     13        (WKPageSetPageUIClient):
     14        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
     15        * UIProcess/Cocoa/UIDelegate.h:
     16        * UIProcess/Cocoa/UIDelegate.mm:
     17        (WebKit::UIDelegate::setDelegate):
     18        (WebKit::UIDelegate::UIClient::isPlayingMediaDidChange):
     19        * UIProcess/WebPageProxy.cpp:
     20        (WebKit::WebPageProxy::isPlayingMediaDidChange):
     21
    1222017-08-31  Alex Christensen  <achristensen@webkit.org>
    223
  • trunk/Source/WebKit/UIProcess/API/APIUIClient.h

    r221216 r221466  
    147147    virtual void pinnedStateDidChange(WebKit::WebPageProxy&) { }
    148148
    149     virtual void isPlayingAudioDidChange(WebKit::WebPageProxy&) { }
     149    virtual void isPlayingMediaDidChange(WebKit::WebPageProxy&, bool) { }
    150150    virtual void mediaCaptureStateDidChange(WebCore::MediaProducer::MediaStateFlags) { }
    151151    virtual void handleAutoplayEvent(WebKit::WebPageProxy&, WebCore::AutoplayEvent, OptionSet<WebCore::AutoplayEventFlags>) { }
  • trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp

    r221216 r221466  
    20602060        }
    20612061
    2062         void isPlayingAudioDidChange(WebPageProxy& page) final
     2062        void isPlayingMediaDidChange(WebPageProxy& page, bool) final
    20632063        {
    20642064            if (!m_client.isPlayingAudioDidChange)
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h

    r221433 r221466  
    150150- (void)_webView:(WKWebView *)webView didNotHandleWheelEvent:(NSEvent *)event WK_API_AVAILABLE(macosx(WK_MAC_TBA));
    151151- (void)_webView:(WKWebView *)webView handleAutoplayEvent:(_WKAutoplayEvent)event withFlags:(_WKAutoplayEventFlags)flags WK_API_AVAILABLE(macosx(WK_MAC_TBA));
     152- (void)_webView:(WKWebView *)webView isPlayingMediaDidChange:(BOOL)playingMedia WK_API_AVAILABLE(macosx(WK_MAC_TBA));
    152153- (void)_webView:(WKWebView *)webView didClickAutoFillButtonWithUserInfo:(id <NSSecureCoding>)userInfo WK_API_AVAILABLE(macosx(WK_MAC_TBA));
    153154- (void)_webView:(WKWebView *)webView saveDataToFile:(NSData *)data suggestedFilename:(NSString *)suggestedFilename mimeType:(NSString *)mimeType originatingURL:(NSURL *)url WK_API_AVAILABLE(macosx(WK_MAC_TBA));
  • trunk/Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp

    r219871 r221466  
    218218    }
    219219
    220     void isPlayingAudioDidChange(WebPageProxy&) override
     220    void isPlayingMediaDidChange(WebPageProxy&, bool) final
    221221    {
    222222        webkitWebViewIsPlayingAudioChanged(m_webView);
  • trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.h

    r221433 r221466  
    101101        void focus(WebPageProxy*) final;
    102102        void unfocus(WebPageProxy*) final;
     103        void isPlayingMediaDidChange(WebKit::WebPageProxy&, bool) final;
    103104        void didNotHandleWheelEvent(WebPageProxy*, const NativeWebWheelEvent&) final;
    104105        void handleAutoplayEvent(WebPageProxy&, WebCore::AutoplayEvent, OptionSet<WebCore::AutoplayEventFlags>) final;
     
    151152        bool webViewTakeFocus : 1;
    152153        bool webViewDidNotHandleWheelEvent : 1;
     154        bool webViewIsPlayingMediaDidChange : 1;
    153155        bool webViewHandleAutoplayEventWithFlags : 1;
    154156        bool webViewDidClickAutoFillButtonWithUserInfo : 1;
  • trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm

    r221433 r221466  
    108108    m_delegateMethods.webViewTakeFocus = [delegate respondsToSelector:@selector(_webView:takeFocus:)];
    109109    m_delegateMethods.webViewDidNotHandleWheelEvent = [delegate respondsToSelector:@selector(_webView:didNotHandleWheelEvent:)];
     110    m_delegateMethods.webViewIsPlayingMediaDidChange = [delegate respondsToSelector:@selector(_webView:isPlayingMediaDidChange:)];
    110111    m_delegateMethods.webViewHandleAutoplayEventWithFlags = [delegate respondsToSelector:@selector(_webView:handleAutoplayEvent:withFlags:)];
    111112    m_delegateMethods.webViewDidClickAutoFillButtonWithUserInfo = [delegate respondsToSelector:@selector(_webView:didClickAutoFillButtonWithUserInfo:)];
     
    464465   
    465466    [(id <WKUIDelegatePrivate>)delegate _webView:m_uiDelegate.m_webView didNotHandleWheelEvent:event.nativeEvent()];
     467}
     468
     469void UIDelegate::UIClient::isPlayingMediaDidChange(WebKit::WebPageProxy&, bool isPlaying)
     470{
     471    if (!m_uiDelegate.m_delegateMethods.webViewIsPlayingMediaDidChange)
     472        return;
     473   
     474    auto delegate = m_uiDelegate.m_delegate.get();
     475    if (!delegate)
     476        return;
     477   
     478    [(id <WKUIDelegatePrivate>)delegate _webView:m_uiDelegate.m_webView isPlayingMediaDidChange:isPlaying];
    466479}
    467480
  • trunk/Source/WebKit/UIProcess/WebPageProxy.cpp

    r221465 r221466  
    65816581    playingMediaMask |= WebCore::MediaProducer::MediaCaptureMask;
    65826582    if ((oldState & playingMediaMask) != (m_mediaState & playingMediaMask))
    6583         m_uiClient->isPlayingAudioDidChange(*this);
     6583        m_uiClient->isPlayingMediaDidChange(*this, (m_mediaState & playingMediaMask));
    65846584
    65856585#if PLATFORM(MAC)
  • trunk/Tools/ChangeLog

    r221465 r221466  
     12017-08-31  Alex Christensen  <achristensen@webkit.org>
     2
     3        Add WKUIDelegatePrivate equivalent of WKPageUIClient's isPlayingAudioDidChange
     4        https://bugs.webkit.org/show_bug.cgi?id=176203
     5        <rdar://problem/29270035>
     6
     7        Reviewed by Tim Horton.
     8
     9        * TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:
     10        (-[MediaDelegate _webView:isPlayingMediaDidChange:]):
     11        (-[MediaDelegate webView:didFinishNavigation:]):
     12        (TEST):
     13
    1142017-08-31  Alex Christensen  <achristensen@webkit.org>
    215
  • trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm

    r221433 r221466  
    3434#import "WKWebViewConfigurationExtras.h"
    3535#import <Carbon/Carbon.h>
     36#import <WebKit/WKPreferencesPrivate.h>
    3637#import <WebKit/WKUIDelegatePrivate.h>
    37 #import <WebKit/WKWebView.h>
     38#import <WebKit/WKWebViewPrivate.h>
    3839#import <wtf/RetainPtr.h>
    3940#import <wtf/mac/AppKitCompatibilityDeclarations.h>
     
    8990   
    9091    ASSERT_EQ(webViewFromDelegateCallback, createdWebView);
     92}
     93
     94@interface MediaDelegate : NSObject <WKUIDelegatePrivate>
     95@end
     96
     97@implementation MediaDelegate
     98
     99- (void)_webView:(WKWebView *)webView isPlayingMediaDidChange:(BOOL)playingMedia
     100{
     101    ASSERT_TRUE(playingMedia);
     102    done = true;
     103}
     104
     105@end
     106
     107TEST(WebKit2, WKWebViewIsPlayingMedia)
     108{
     109    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:CGRectMake(0, 0, 800, 600) configuration:[[[WKWebViewConfiguration alloc] init] autorelease]]);
     110    auto delegate = adoptNS([[MediaDelegate alloc] init]);
     111    [webView setUIDelegate:delegate.get()];
     112    [webView synchronouslyLoadTestPageNamed:@"file-with-video"];
     113    [webView evaluateJavaScript:@"playVideo()" completionHandler:nil];
     114    TestWebKitAPI::Util::run(&done);
    91115}
    92116
Note: See TracChangeset for help on using the changeset viewer.