Changeset 177154 in webkit


Ignore:
Timestamp:
Dec 11, 2014 9:51:25 AM (9 years ago)
Author:
jeremyj-wk@apple.com
Message:

Restore interface state when stopping optimized fullscreen.
https://bugs.webkit.org/show_bug.cgi?id=139465

Reviewed by Simon Fraser.

  • platform/ios/WebVideoFullscreenControllerAVKit.mm:

(-[WebVideoFullscreenController fullscreenMayReturnToInline:]): add empty implementation.

  • platform/ios/WebVideoFullscreenInterfaceAVKit.h: add declaration
  • platform/ios/WebVideoFullscreenInterfaceAVKit.mm:

(WebVideoFullscreenInterfaceAVKit::enterFullscreen): restore interface context when optimized mode ends.
(WebVideoFullscreenInterfaceAVKit::setIsOptimized): restore interface context when optimized mode ends.

  • UIProcess/API/APIUIClient.h:

(API::UIClient::fullscreenMayReturnToInline): added

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

(WebKit::UIDelegate::setDelegate): check for responds to selector
(WebKit::UIDelegate::UIClient::fullscreenMayReturnToInline): added

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::fullscreenMayReturnToInline): added.

  • UIProcess/WebPageProxy.h: add declaration
  • UIProcess/ios/WebVideoFullscreenManagerProxy.h: add declaration
  • UIProcess/ios/WebVideoFullscreenManagerProxy.mm:

(WebKit::WebVideoFullscreenManagerProxy::fullscreenMayReturnToInline): show the tab.

Location:
trunk/Source
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r177153 r177154  
     12014-12-09  Jeremy Jones  <jeremyj@apple.com>
     2
     3        Restore interface state when stopping optimized fullscreen.
     4        https://bugs.webkit.org/show_bug.cgi?id=139465
     5
     6        Reviewed by Simon Fraser.
     7
     8        * platform/ios/WebVideoFullscreenControllerAVKit.mm:
     9        (-[WebVideoFullscreenController fullscreenMayReturnToInline:]): add empty implementation.
     10        * platform/ios/WebVideoFullscreenInterfaceAVKit.h: add declaration
     11        * platform/ios/WebVideoFullscreenInterfaceAVKit.mm:
     12        (WebVideoFullscreenInterfaceAVKit::enterFullscreen): restore interface context when optimized mode ends.
     13        (WebVideoFullscreenInterfaceAVKit::setIsOptimized): restore interface context when optimized mode ends.
     14
    1152014-12-11  Anders Carlsson  <andersca@apple.com>
    216
  • trunk/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm

    r177081 r177154  
    7373- (void)didExitFullscreen;
    7474- (void)didCleanupFullscreen;
     75- (void)fullscreenMayReturnToInline;
    7576@end
    7677
     
    8384    virtual void didExitFullscreen() override { [_target didExitFullscreen]; }
    8485    virtual void didCleanupFullscreen() override { [_target didCleanupFullscreen]; }
     86    virtual void fullscreenMayReturnToInline() override { [_target fullscreenMayReturnToInline]; }
    8587};
    8688
     
    180182}
    181183
     184- (void)fullscreenMayReturnToInline
     185{
     186}
     187
    182188@end
    183189
  • trunk/Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.h

    r177039 r177154  
    6060    virtual void didExitFullscreen() = 0;
    6161    virtual void didCleanupFullscreen() = 0;
     62    virtual void fullscreenMayReturnToInline() = 0;
    6263};
    6364
  • trunk/Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm

    r177081 r177154  
    908908                    }
    909909                });
    910             } stopCompletionHandler:^(AVPlayerViewControllerOptimizedFullscreenStopReason) {
     910            } stopCompletionHandler:^(AVPlayerViewControllerOptimizedFullscreenStopReason reason) {
    911911                m_exitCompleted = true;
     912               
     913                if (m_fullscreenChangeObserver && reason == AVPlayerViewControllerOptimizedFullscreenStopReasonStopped)
     914                    m_fullscreenChangeObserver->fullscreenMayReturnToInline();
     915
    912916                if (m_exitRequested) {
    913917                    [m_videoLayerContainer setBackgroundColor:[[getUIColorClass() clearColor] CGColor]];
     
    11041108    [m_window setHidden:m_mode & HTMLMediaElement::VideoFullscreenModeOptimized];
    11051109   
     1110    if (m_fullscreenChangeObserver && ~m_mode & HTMLMediaElement::VideoFullscreenModeOptimized)
     1111        m_fullscreenChangeObserver->fullscreenMayReturnToInline();
     1112
    11061113    if (!m_exitRequested || active)
    11071114        return;
  • trunk/Source/WebKit2/ChangeLog

    r177152 r177154  
     12014-12-09  Jeremy Jones  <jeremyj@apple.com>
     2
     3        Restore interface state when stopping optimized fullscreen.
     4        https://bugs.webkit.org/show_bug.cgi?id=139465
     5
     6        Reviewed by Simon Fraser.
     7
     8        Implement fullscreenMayReturnToInline() to request the client application show the corresponding tab.
     9
     10        * UIProcess/API/APIUIClient.h:
     11        (API::UIClient::fullscreenMayReturnToInline): added
     12        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: add declaration
     13        * UIProcess/Cocoa/UIDelegate.h: add declaration
     14        * UIProcess/Cocoa/UIDelegate.mm:
     15        (WebKit::UIDelegate::setDelegate): check for responds to selector
     16        (WebKit::UIDelegate::UIClient::fullscreenMayReturnToInline): added
     17        * UIProcess/WebPageProxy.cpp:
     18        (WebKit::WebPageProxy::fullscreenMayReturnToInline): added.
     19        * UIProcess/WebPageProxy.h: add declaration
     20        * UIProcess/ios/WebVideoFullscreenManagerProxy.h: add declaration
     21        * UIProcess/ios/WebVideoFullscreenManagerProxy.mm:
     22        (WebKit::WebVideoFullscreenManagerProxy::fullscreenMayReturnToInline): show the tab.
     23
    1242014-12-11  Alexey Proskuryakov  <ap@apple.com>
    225
  • trunk/Source/WebKit2/UIProcess/API/APIUIClient.h

    r176011 r177154  
    7272    virtual PassRefPtr<WebKit::WebPageProxy> createNewPage(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, const WebCore::ResourceRequest&, const WebCore::WindowFeatures&, const WebKit::NavigationActionData&) { return nullptr; }
    7373    virtual void showPage(WebKit::WebPageProxy*) { }
     74    virtual void fullscreenMayReturnToInline(WebKit::WebPageProxy*) { }
    7475    virtual void close(WebKit::WebPageProxy*) { }
    7576
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegatePrivate.h

    r176308 r177154  
    4646
    4747- (void)_webViewClose:(WKWebView *)webView;
     48- (void)_webViewFullscreenMayReturnToInline:(WKWebView *)webView;
    4849
    4950#if TARGET_OS_IPHONE
  • trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.h

    r173851 r177154  
    6161        virtual PassRefPtr<WebKit::WebPageProxy> createNewPage(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, const WebCore::ResourceRequest&, const WebCore::WindowFeatures&, const WebKit::NavigationActionData&) override;
    6262        virtual void close(WebKit::WebPageProxy*) override;
     63        virtual void fullscreenMayReturnToInline(WebKit::WebPageProxy*) override;
    6364        virtual void runJavaScriptAlert(WebKit::WebPageProxy*, const WTF::String&, WebKit::WebFrameProxy*, std::function<void ()> completionHandler) override;
    6465        virtual void runJavaScriptConfirm(WebKit::WebPageProxy*, const WTF::String&, WebKit::WebFrameProxy*, std::function<void (bool)> completionHandler) override;
     
    8788        bool webViewPrintFrame : 1;
    8889        bool webViewClose : 1;
     90        bool webViewFullscreenMayReturnToInline : 1;
    8991#if PLATFORM(IOS)
    9092        bool webViewActionsForElementDefaultActions : 1;
  • trunk/Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm

    r173851 r177154  
    7373    m_delegateMethods.webViewPrintFrame = [delegate respondsToSelector:@selector(_webView:printFrame:)];
    7474    m_delegateMethods.webViewClose = [delegate respondsToSelector:@selector(_webViewClose:)];
     75    m_delegateMethods.webViewFullscreenMayReturnToInline = [delegate respondsToSelector:@selector(_webViewFullscreenMayReturnToInline:)];
    7576#if PLATFORM(IOS)
    7677    m_delegateMethods.webViewActionsForElementDefaultActions = [delegate respondsToSelector:@selector(_webView:actionsForElement:defaultActions:)];
     
    242243}
    243244
     245void UIDelegate::UIClient::fullscreenMayReturnToInline(WebKit::WebPageProxy*)
     246{
     247    if (!m_uiDelegate.m_delegateMethods.webViewFullscreenMayReturnToInline)
     248        return;
     249   
     250    auto delegate = m_uiDelegate.m_delegate.get();
     251    if (!delegate)
     252        return;
     253   
     254    [(id <WKUIDelegatePrivate>)delegate _webViewFullscreenMayReturnToInline:m_uiDelegate.m_webView];
     255}
     256   
    244257#if PLATFORM(IOS)
    245258RetainPtr<NSArray> UIDelegate::UIClient::actionsForElement(_WKActivatedElementInfo *elementInfo, RetainPtr<NSArray> defaultActions)
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r177152 r177154  
    30903090}
    30913091
     3092void WebPageProxy::fullscreenMayReturnToInline()
     3093{
     3094    m_uiClient->fullscreenMayReturnToInline(this);
     3095}
     3096
    30923097void WebPageProxy::closePage(bool stopResponsivenessTimer)
    30933098{
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.h

    r177123 r177154  
    269269    void setAddsVisitedLinks(bool addsVisitedLinks) { m_addsVisitedLinks = addsVisitedLinks; }
    270270
     271    void fullscreenMayReturnToInline();
     272
    271273#if ENABLE(INSPECTOR)
    272274    WebInspectorProxy* inspector();
  • trunk/Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.h

    r177012 r177154  
    6666    virtual void didExitFullscreen() override;
    6767    virtual void didCleanupFullscreen() override;
     68    virtual void fullscreenMayReturnToInline() override;
    6869   
    6970    // FullscreenModel
  • trunk/Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.mm

    r177081 r177154  
    129129}
    130130   
     131void WebVideoFullscreenManagerProxy::fullscreenMayReturnToInline()
     132{
     133    m_page->fullscreenMayReturnToInline();
     134}
     135
    131136void WebVideoFullscreenManagerProxy::requestExitFullscreen()
    132137{
Note: See TracChangeset for help on using the changeset viewer.