X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=Source%2FWebKit2%2FUIProcess%2FWebPageProxy.cpp;h=cf2c1747121c776c8d51645d1c709971b24b443e;hb=2e49e20e312f0da1b7fcb7cbf28e540ac795a3e6;hp=f81ca4dfa7e309f06603a5a369e7c3e3e1226fd7;hpb=e62f45192276825f16586f9f3db67c5235832720;p=framework%2Fweb%2Fwebkit-efl.git diff --git a/Source/WebKit2/UIProcess/WebPageProxy.cpp b/Source/WebKit2/UIProcess/WebPageProxy.cpp index f81ca4d..cf2c174 100755 --- a/Source/WebKit2/UIProcess/WebPageProxy.cpp +++ b/Source/WebKit2/UIProcess/WebPageProxy.cpp @@ -126,6 +126,10 @@ #include "InputMethodContextEfl.h" #endif +#if ENABLE(TIZEN_VIEWPORT_META_TAG) +#include +#endif + // This controls what strategy we use for mouse wheel coalescing. #define MERGE_WHEEL_EVENTS 1 @@ -190,7 +194,7 @@ WebPageProxy::WebPageProxy(PageClient* pageClient, PassRefPtr p , m_textZoomFactor(1) , m_pageZoomFactor(1) , m_pageScaleFactor(1) - , m_intrinsicDeviceScaleFactor(1) + , m_intrinsicDeviceScaleFactor(getMobileDPI() / 160) , m_customDeviceScaleFactor(0) #if HAVE(LAYER_HOSTING_IN_WINDOW_SERVER) , m_layerHostingMode(LayerHostingModeInWindowServer) @@ -253,6 +257,9 @@ WebPageProxy::WebPageProxy(PageClient* pageClient, PassRefPtr p #if ENABLE(TIZEN_ISF_PORT) , m_didCancelCompositionFromWebProcess(false) #endif +#if ENABLE(TIZEN_WEBKIT2_NOTIFY_SUSPEND_BY_REMOTE_WEB_INSPECTOR) + , m_contentSuspendedByInspector(false) +#endif { #ifndef NDEBUG webPageProxyCounter.increment(); @@ -613,6 +620,12 @@ void WebPageProxy::loadContentsbyMimeType(const WebData* contents, const String& reattachToWebProcess(); process()->assumeReadAccessToBaseURL(baseURL); +#if ENABLE(TIZEN_UNIVERSAL_FILE_READ_ACCESS) + SandboxExtension::Handle sandboxExtensionHandleEmail; + bool createdExtension = maybeInitializeSandboxExtensionHandle(KURL(KURL(), baseURL), sandboxExtensionHandleEmail); + if (createdExtension) + process()->willAcquireUniversalFileReadSandboxExtension(); +#endif process()->send(Messages::WebPage::LoadContentsbyMimeType(contents->dataReference(), mimeType, encoding, baseURL), m_pageID); process()->responsivenessTimer()->start(); } @@ -1246,9 +1259,22 @@ void WebPageProxy::handleGestureEvent(const WebGestureEvent& event) if (!isValid()) return; +#if ENABLE(TIZEN_ISF_PORT) || ENABLE(TIZEN_WEBKIT2_FOCUS_RING) + if (event.type() == WebEvent::GestureSingleTap) { +#if ENABLE(TIZEN_WEBKIT2_FOCUS_RING) + FocusRing* focusRing = ewkViewGetFocusRing(viewWidget()); + if (focusRing) { + IntPoint tapPosition = EwkViewImpl::fromEvasObject(viewWidget())->transformToScene().mapPoint(event.position()); + focusRing->requestToShow(tapPosition, true); + } +#endif + #if ENABLE(TIZEN_ISF_PORT) - if (event.type() == WebEvent::GestureSingleTap) - EwkViewImpl::fromEvasObject(viewWidget())->inputMethodContext()->resetIMFContext(); + InputMethodContextEfl* inputMethodContext = static_cast(m_pageClient)->viewImpl()->inputMethodContext(); + if (inputMethodContext) + inputMethodContext->resetIMFContext(); +#endif + } #endif #if ENABLE(TIZEN_WEBKIT2_ROTATION_WHILE_JAVASCRIPT_POPUP) @@ -1285,7 +1311,11 @@ void WebPageProxy::handlePotentialActivation(const IntPoint& touchPoint, const I void WebPageProxy::handleTouchEvent(const NativeWebTouchEvent& event) { +#if ENABLE(TIZEN_WEBKIT2_NOTIFY_SUSPEND_BY_REMOTE_WEB_INSPECTOR) + if (!isValid() || isContentSuspendedByInspector()) +#else if (!isValid()) +#endif return; // If the page is suspended, which should be the case during panning, pinching @@ -2644,6 +2674,9 @@ void WebPageProxy::runJavaScriptAlert(uint64_t frameID, const String& message, P process()->responsivenessTimer()->stop(); m_alertReply = reply; +#if ENABLE(TIZEN_WEBKIT2_NOTIFY_POPUP_REPLY_STATUS) + m_uiClient.notifyPopupReplyWaitingState(this, true); +#endif #if ENABLE(TIZEN_WEBKIT2_ROTATION_WHILE_JAVASCRIPT_POPUP) process()->connection()->setForcelySetAllAsyncMessagesToDispatchEvenWhenWaitingForSyncReply(true); #endif @@ -2660,6 +2693,9 @@ void WebPageProxy::runJavaScriptConfirm(uint64_t frameID, const String& message, process()->responsivenessTimer()->stop(); m_confirmReply = reply; +#if ENABLE(TIZEN_WEBKIT2_NOTIFY_POPUP_REPLY_STATUS) + m_uiClient.notifyPopupReplyWaitingState(this, true); +#endif #if ENABLE(TIZEN_WEBKIT2_ROTATION_WHILE_JAVASCRIPT_POPUP) process()->connection()->setForcelySetAllAsyncMessagesToDispatchEvenWhenWaitingForSyncReply(true); #endif @@ -2676,6 +2712,9 @@ void WebPageProxy::runJavaScriptPrompt(uint64_t frameID, const String& message, process()->responsivenessTimer()->stop(); m_promptReply = reply; +#if ENABLE(TIZEN_WEBKIT2_NOTIFY_POPUP_REPLY_STATUS) + m_uiClient.notifyPopupReplyWaitingState(this, true); +#endif #if ENABLE(TIZEN_WEBKIT2_ROTATION_WHILE_JAVASCRIPT_POPUP) process()->connection()->setForcelySetAllAsyncMessagesToDispatchEvenWhenWaitingForSyncReply(true); #endif @@ -3778,6 +3817,23 @@ void WebPageProxy::didReceiveEvent(uint32_t opaqueType, bool handled) m_gestureEventQueue.removeFirst(); m_pageClient->doneWithGestureEvent(event, handled); #endif +#if ENABLE(TIZEN_ISF_PORT) + if (m_isVisible && type == WebEvent::GestureSingleTap && m_editorState.isContentEditable) { +#if ENABLE(TIZEN_INPUT_TAG_EXTENSION) + if (m_editorState.inputMethodHints == "date" + || m_editorState.inputMethodHints == "datetime" + || m_editorState.inputMethodHints == "datetime-local" + || m_editorState.inputMethodHints == "month" + || m_editorState.inputMethodHints == "time" + || m_editorState.inputMethodHints == "week") { + InputMethodContextEfl* inputMethodContext = static_cast(m_pageClient)->viewImpl()->inputMethodContext(); + if (inputMethodContext->inputPickerType() == -1) + break; + } +#endif + evas_object_focus_set(viewWidget(), true); + } +#endif break; } #endif @@ -3807,20 +3863,11 @@ void WebPageProxy::didReceiveEvent(uint32_t opaqueType, bool handled) #if ENABLE(TIZEN_WEBKIT2_ROTATION_WHILE_JAVASCRIPT_POPUP) QueuedUIEvents queuedEvents = m_keyEventQueue.first(); - MESSAGE_CHECK(type == queuedEvents.forwardedEvent.type()); + NativeWebKeyboardEvent event = queuedEvents.forwardedEvent; + MESSAGE_CHECK(type == event.type()); m_keyEventQueue.removeFirst(); - m_pageClient->doneWithKeyEvent(queuedEvents.forwardedEvent, handled); - - if (!handled) { - if (m_uiClient.implementsDidNotHandleKeyEvent()) - m_uiClient.didNotHandleKeyEvent(this, queuedEvents.forwardedEvent); -#if PLATFORM(WIN) - else - ::TranslateMessage(queuedEvents.forwardedEvent.nativeEvent()); -#endif - } - + m_pageClient->doneWithKeyEvent(event, handled); for (size_t i = 0; i < queuedEvents.deferredEvents.size(); ++i) { bool isEventHandled = false; m_pageClient->doneWithKeyEvent(queuedEvents.deferredEvents.at(i), isEventHandled); @@ -3835,16 +3882,23 @@ void WebPageProxy::didReceiveEvent(uint32_t opaqueType, bool handled) process()->send(Messages::WebPage::KeyEvent(m_keyEventQueue.first()), m_pageID); m_pageClient->doneWithKeyEvent(event, handled); +#endif // #if ENABLE(TIZEN_WEBKIT2_ROTATION_WHILE_JAVASCRIPT_POPUP) + if (handled) break; +#if ENABLE(TIZEN_ISF_PORT) + InputMethodContextEfl* inputMethodContext = static_cast(m_pageClient)->viewImpl()->inputMethodContext(); + if (event.type() == WebEvent::KeyDown && event.keyIdentifier() == "Enter" && inputMethodContext && inputMethodContext->autoCapitalType() == ECORE_IMF_AUTOCAPITAL_TYPE_NONE) + inputMethodContext->hideIMFContext(); +#endif + if (m_uiClient.implementsDidNotHandleKeyEvent()) m_uiClient.didNotHandleKeyEvent(this, event); #if PLATFORM(WIN) else ::TranslateMessage(event.nativeEvent()); #endif -#endif // #if ENABLE(TIZEN_WEBKIT2_ROTATION_WHILE_JAVASCRIPT_POPUP) break; } #if ENABLE(TOUCH_EVENTS) @@ -4226,20 +4280,47 @@ void WebPageProxy::canAuthenticateAgainstProtectionSpaceInFrame(uint64_t frameID canAuthenticate = m_loaderClient.canAuthenticateAgainstProtectionSpaceInFrame(this, frame, protectionSpace.get()); } +#if ENABLE(TIZEN_ON_AUTHENTICATION_REQUESTED) +void WebPageProxy::didReceiveAuthenticationChallenge(uint64_t frameID, const AuthenticationChallenge& coreChallenge, uint64_t challengeID, PassRefPtr reply) +#else void WebPageProxy::didReceiveAuthenticationChallenge(uint64_t frameID, const AuthenticationChallenge& coreChallenge, uint64_t challengeID) +#endif { WebFrameProxy* frame = process()->webFrame(frameID); MESSAGE_CHECK(frame); #if ENABLE(TIZEN_ON_AUTHENTICATION_REQUESTED) RefPtr authenticationChallenge = frame->setUpAuthenticationChallengeProxy(coreChallenge, challengeID, process()); + m_AuthReply = reply; + + if (!m_loaderClient.didReceiveAuthenticationChallengeInFrame(this, frame, authenticationChallenge.get())) + replyReceiveAuthenticationChallengeInFrame(true); #else RefPtr authenticationChallenge = AuthenticationChallengeProxy::create(coreChallenge, challengeID, process()); -#endif m_loaderClient.didReceiveAuthenticationChallengeInFrame(this, frame, authenticationChallenge.get()); +#endif } +#if ENABLE(TIZEN_SQL_DATABASE) +void WebPageProxy::exceededDatabaseQuota(uint64_t frameID, const String& originIdentifier, const String& displayName, uint64_t expectedUsage, PassRefPtr allowExceed) +{ + WebFrameProxy* frame = process()->webFrame(frameID); + MESSAGE_CHECK(frame); + + // Since exceededDatabaseQuota() can spin a nested run loop we need to turn off the responsiveness timer. + process()->responsivenessTimer()->stop(); + + m_exceededDatabaseQuotaReply = allowExceed; + RefPtr origin = WebSecurityOrigin::createFromDatabaseIdentifier(originIdentifier); +#if ENABLE(TIZEN_WEBKIT2_ROTATION_WHILE_JAVASCRIPT_POPUP) + process()->connection()->setForcelySetAllAsyncMessagesToDispatchEvenWhenWaitingForSyncReply(true); +#endif + + if (!m_uiClient.exceededDatabaseQuota(this, frame, origin.get(), displayName, expectedUsage)) + replyExceededDatabaseQuota(true); +} +#else void WebPageProxy::exceededDatabaseQuota(uint64_t frameID, const String& originIdentifier, const String& databaseName, const String& displayName, uint64_t currentQuota, uint64_t currentOriginUsage, uint64_t currentDatabaseUsage, uint64_t expectedUsage, uint64_t& newQuota) { WebFrameProxy* frame = process()->webFrame(frameID); @@ -4249,6 +4330,7 @@ void WebPageProxy::exceededDatabaseQuota(uint64_t frameID, const String& originI newQuota = m_uiClient.exceededDatabaseQuota(this, frame, origin.get(), databaseName, displayName, currentQuota, currentOriginUsage, currentDatabaseUsage, expectedUsage); } +#endif void WebPageProxy::requestGeolocationPermissionForFrame(uint64_t geolocationID, uint64_t frameID, String originIdentifier) {