if (document()->webkitIsFullScreen() && document()->webkitCurrentFullScreenElement() == toParentMediaElement(this))
document()->webkitCancelFullScreen();
else {
-#if ENABLE(TIZEN_GSTREAMER_VIDEO)
- // Scale content with minimum scale value to show control elements properly.
- FrameView* frameView = document()->frame()->view();
- frameView->requestVisibleContentRectRestore(IntPoint(), 0.0);
-#endif
document()->requestFullScreenForElement(toParentMediaElement(this), 0, Document::ExemptIFrameAllowFullScreenRequirement);
}
} else
if (Page* page = document()->page()) {
page->chrome()->setCursorHiddenUntilMouseMoves(true);
-
-#if ENABLE(TIZEN_GSTREAMER_VIDEO) && ENABLE(TIZEN_WEBKIT2_HISTORICAL_RESTORE_VISIBLE_CONTENT_RECT)
- float scaleFactor = page->chrome()->contentsScaleFactor();
- if (scaleFactor > 0)
- m_panel->setInlineStyleProperty(CSSPropertyZoom, 1 / scaleFactor, CSSPrimitiveValue::CSS_NUMBER);
-#endif
}
#if !ENABLE(TIZEN_GSTREAMER_VIDEO)
// And if we reenter fullscreen we also want the panel in the standard position.
m_panel->resetPosition();
-#if ENABLE(TIZEN_GSTREAMER_VIDEO) && ENABLE(TIZEN_WEBKIT2_HISTORICAL_RESTORE_VISIBLE_CONTENT_RECT)
- m_panel->removeInlineStyleProperty(CSSPropertyZoom);
-#endif
-
#if !ENABLE(TIZEN_GSTREAMER_VIDEO)
stopHideFullscreenControlsTimer();
#endif
// recalculate minimum scale factor if contents' width exceeds viewport layout width and userScalable is true.
// minimum scale factor shouldn't be smaller than 0.25(minimum zoom level)
IntSize contentsSize = m_viewImpl->page()->contentsSize();
+#if ENABLE(TIZEN_FULLSCREEN_API)
+ if (m_viewImpl->page()->fullScreenManager()->isFullScreen())
+ contentsSize = viewSize();
+#endif
+
double horizontalMinScale = max(((double)viewSize().width() / contentsSize.width()), 0.25);
double verticalMinScale = max(((double)viewSize().height() / contentsSize.height()), 0.25);
return min(max(horizontalMinScale, verticalMinScale), m_viewportConstraints.maximumScale);
};
ViewportConstraints viewportConstraints() { return m_viewportConstraints; }
+#if ENABLE(TIZEN_FULLSCREEN_API)
+ void setMinimumScale(double minimumScale) { m_viewportConstraints.minimumScale = minimumScale; }
+#endif
ViewportConstraints computeViewportConstraints(const WebCore::ViewportAttributes&);
double adjustScaleWithViewport(double);
#if USE(TILED_BACKING_STORE) && ENABLE(TIZEN_WEBKIT2_TILED_BACKING_STORE)
m_isWaitingForDidUpdateBackingStoreState = respondImmediatelyOrNot == RespondImmediately;
+#if ENABLE(TIZEN_FULLSCREEN_API)
+ float scaleFactor = (m_webPageProxy->fullScreenManager()->isFullScreen()) ? 1.0f : m_webPageProxy->deviceScaleFactor();
+ m_webPageProxy->process()->send(Messages::DrawingArea::UpdateBackingStoreState(m_nextBackingStoreStateID, respondImmediatelyOrNot == RespondImmediately, scaleFactor, m_size, m_scrollOffset), m_webPageProxy->pageID());
+#else
m_webPageProxy->process()->send(Messages::DrawingArea::UpdateBackingStoreState(m_nextBackingStoreStateID, respondImmediatelyOrNot == RespondImmediately, m_webPageProxy->deviceScaleFactor(), m_size, m_scrollOffset), m_webPageProxy->pageID());
+#endif
m_scrollOffset = IntSize();
if (m_isWaitingForDidUpdateBackingStoreState) {
void supportsFullScreen(bool withKeyboard, bool&);
void enterFullScreen();
void exitFullScreen();
+#if ENABLE(TIZEN_FULLSCREEN_API)
+ void enterFullScreenForMediaElement();
+ void exitFullScreenForMediaElement();
+#endif
void beganEnterFullScreen(const WebCore::IntRect& initialFrame, const WebCore::IntRect& finalFrame);
void beganExitFullScreen(const WebCore::IntRect& initialFrame, const WebCore::IntRect& finalFrame);
WebPageProxy* m_page;
PlatformWebView* m_webView;
bool m_isFullScreen;
+#if ENABLE(TIZEN_FULLSCREEN_API)
+ double m_previousMinimumScale;
+ float m_previousScaleFactor;
+#endif
void didReceiveWebFullScreenManagerProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*);
void didReceiveSyncWebFullScreenManagerProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder* arguments, OwnPtr<CoreIPC::ArgumentEncoder>& reply);
SupportsFullScreen(bool withKeyboard) -> (bool supportsFullScreen)
EnterFullScreen()
ExitFullScreen()
+#if ENABLE(TIZEN_FULLSCREEN_API)
+ EnterFullScreenForMediaElement()
+ ExitFullScreenForMediaElement()
+#endif
BeganEnterFullScreen(WebCore::IntRect initialRect, WebCore::IntRect finalRect)
BeganExitFullScreen(WebCore::IntRect initialRect, WebCore::IntRect finalRect)
Close()
m_isFullScreen = false;
}
+#if ENABLE(TIZEN_FULLSCREEN_API)
+void WebFullScreenManagerProxy::enterFullScreenForMediaElement()
+{
+ if (!m_webView)
+ return;
+
+ EwkViewImpl* viewImpl = EwkViewImpl::fromEvasObject(m_webView);
+ PageClientImpl* pageClientImpl = viewImpl->pageClient.get();
+
+ m_previousMinimumScale = pageClientImpl->viewportConstraints().minimumScale;
+ m_previousScaleFactor = viewImpl->scaleFactor();
+
+ pageClientImpl->setMinimumScale(1.0);
+ viewImpl->setScaleFactor(1.0f);
+
+ enterFullScreen();
+}
+
+void WebFullScreenManagerProxy::exitFullScreenForMediaElement()
+{
+ if (!m_webView)
+ return;
+
+ EwkViewImpl* viewImpl = EwkViewImpl::fromEvasObject(m_webView);
+ PageClientImpl* pageClientImpl = viewImpl->pageClient.get();
+
+ pageClientImpl->setMinimumScale(m_previousMinimumScale);
+ viewImpl->setScaleFactor(m_previousScaleFactor);
+
+ exitFullScreen();
+}
+#endif
+
void WebFullScreenManagerProxy::beganEnterFullScreen(const IntRect& initialFrame, const IntRect& finalFrame)
{
notImplemented();
if (m_client.enterFullScreenForElement) {
RefPtr<InjectedBundleNodeHandle> nodeHandle = InjectedBundleNodeHandle::getOrCreate(element);
m_client.enterFullScreenForElement(toAPI(page), toAPI(nodeHandle.get()));
+#if ENABLE(TIZEN_FULLSCREEN_API)
+ } else if (element->isMediaElement()) {
+ page->send(Messages::WebFullScreenManagerProxy::EnterFullScreenForMediaElement());
+#endif
} else
page->send(Messages::WebFullScreenManagerProxy::EnterFullScreen());
}
if (m_client.exitFullScreenForElement) {
RefPtr<InjectedBundleNodeHandle> nodeHandle = InjectedBundleNodeHandle::getOrCreate(element);
m_client.exitFullScreenForElement(toAPI(page), toAPI(nodeHandle.get()));
+#if ENABLE(TIZEN_FULLSCREEN_API)
+ } else if (element->isMediaElement()) {
+ page->send(Messages::WebFullScreenManagerProxy::ExitFullScreenForMediaElement());
+#endif
} else
page->send(Messages::WebFullScreenManagerProxy::ExitFullScreen());
}
WEBKIT_OPTION_DEFINE(ENABLE_TIZEN_CSS3_TEXT "Enable CSS3 TEXT" ON)
WEBKIT_OPTION_DEFINE(ENABLE_TIZEN_DBSPACE_PATH "Enable Tizen application's directory path" ON)
WEBKIT_OPTION_DEFINE(ENABLE_TIZEN_EXTENSIBLE_API "Enable Tizen extensible api" ON)
+WEBKIT_OPTION_DEFINE(ENABLE_TIZEN_FULLSCREEN_API "Enable Tizen fullscreen api" ON)
WEBKIT_OPTION_DEFINE(ENABLE_TIZEN_GC_ACTIVITY_CALLBACK "Use GC Activity Callback" ON)
WEBKIT_OPTION_DEFINE(ENABLE_TIZEN_INTERNATIONAL_TEXT_SUPPORT "Enable International text support for tizen webkit" ON)
WEBKIT_OPTION_DEFINE(ENABLE_TIZEN_KEYGEN "Enable Tizen WebKit2 feature" ON)
#cmakedefine01 ENABLE_TIZEN_CSS_ALIASES
#cmakedefine01 ENABLE_TIZEN_CSS3_TEXT
#cmakedefine01 ENABLE_TIZEN_EXTENSIBLE_API
+#cmakedefine01 ENABLE_TIZEN_FULLSCREEN_API
#cmakedefine01 ENABLE_TIZEN_INTERNATIONAL_TEXT_SUPPORT
#cmakedefine01 ENABLE_TIZEN_REGISTER_CONTENT_HANDLER
#cmakedefine01 ENABLE_TIZEN_RESET_PATH