diff options
| author | Steve Block <steveblock@google.com> | 2010-08-11 12:55:32 +0100 |
|---|---|---|
| committer | Steve Block <steveblock@google.com> | 2010-08-19 18:50:03 +0100 |
| commit | a49e216a2b9e2243bdeb847a5ebb66a0a291b902 (patch) | |
| tree | 4b8f123ce9e15d9d093f3fb611105f94c2cb59ff /WebKit/android/jni/DeviceOrientationManager.cpp | |
| parent | c2734c93736c8d81f71459461411114e7cb6b44f (diff) | |
| download | external_webkit-a49e216a2b9e2243bdeb847a5ebb66a0a291b902.zip external_webkit-a49e216a2b9e2243bdeb847a5ebb66a0a291b902.tar.gz external_webkit-a49e216a2b9e2243bdeb847a5ebb66a0a291b902.tar.bz2 | |
Implement DeviceOrientation
Change-Id: I12d5632b37db581065db9bcbd49f3dc28ecd7719
Diffstat (limited to 'WebKit/android/jni/DeviceOrientationManager.cpp')
| -rw-r--r-- | WebKit/android/jni/DeviceOrientationManager.cpp | 41 |
1 files changed, 36 insertions, 5 deletions
diff --git a/WebKit/android/jni/DeviceOrientationManager.cpp b/WebKit/android/jni/DeviceOrientationManager.cpp index 8a48ce8..621e646 100644 --- a/WebKit/android/jni/DeviceOrientationManager.cpp +++ b/WebKit/android/jni/DeviceOrientationManager.cpp @@ -26,7 +26,12 @@ #include "config.h" #include "DeviceOrientationManager.h" +#include "DeviceOrientationClientImpl.h" +#include "DeviceOrientationController.h" #include "WebViewCore.h" +#include "Frame.h" +#include "Page.h" + #include <DeviceOrientationClientMock.h> #include <JNIHelp.h> @@ -34,8 +39,9 @@ using namespace WebCore; namespace android { -DeviceOrientationManager::DeviceOrientationManager() +DeviceOrientationManager::DeviceOrientationManager(WebViewCore* webViewCore) : m_useMock(false) + , m_webViewCore(webViewCore) { } @@ -51,16 +57,34 @@ void DeviceOrientationManager::setMockOrientation(PassRefPtr<DeviceOrientation> static_cast<DeviceOrientationClientMock*>(client())->setOrientation(orientation); }; +void DeviceOrientationManager::onOrientationChange(PassRefPtr<DeviceOrientation> orientation) +{ + ASSERT(!m_useMock); + static_cast<DeviceOrientationClientImpl*>(m_client.get())->onOrientationChange(orientation); +} + +void DeviceOrientationManager::maybeSuspendClient() +{ + if (!m_useMock && m_client) + static_cast<DeviceOrientationClientImpl*>(m_client.get())->suspend(); +} + +void DeviceOrientationManager::maybeResumeClient() +{ + if (!m_useMock && m_client) + static_cast<DeviceOrientationClientImpl*>(m_client.get())->resume(); +} + DeviceOrientationClient* DeviceOrientationManager::client() { - // FIXME: Implement real client. if (!m_client) - m_client.set(m_useMock ? new DeviceOrientationClientMock() : 0); + m_client.set(m_useMock ? new DeviceOrientationClientMock + : static_cast<DeviceOrientationClient*>(new DeviceOrientationClientImpl(m_webViewCore))); ASSERT(m_client); return m_client.get(); } -// JNI for android.webkit.MockDeviceOrientation +// JNI for android.webkit.DeviceOrientationManager static const char* javaDeviceOrientationManagerClass = "android/webkit/DeviceOrientationManager"; static WebViewCore* getWebViewCore(JNIEnv* env, jobject webViewCoreObject) @@ -81,9 +105,16 @@ static void setMockOrientation(JNIEnv* env, jobject, jobject webViewCoreObject, getWebViewCore(env, webViewCoreObject)->deviceOrientationManager()->setMockOrientation(orientation.release()); } +static void onOrientationChange(JNIEnv* env, jobject, jobject webViewCoreObject, bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma) +{ + RefPtr<DeviceOrientation> orientation = DeviceOrientation::create(canProvideAlpha, alpha, canProvideBeta, beta, canProvideGamma, gamma); + getWebViewCore(env, webViewCoreObject)->deviceOrientationManager()->onOrientationChange(orientation.release()); +} + static JNINativeMethod gDeviceOrientationManagerMethods[] = { { "nativeUseMock", "(Landroid/webkit/WebViewCore;)V", (void*) useMock }, - { "nativeSetMockOrientation", "(Landroid/webkit/WebViewCore;ZDZDZD)V", (void*) setMockOrientation } + { "nativeSetMockOrientation", "(Landroid/webkit/WebViewCore;ZDZDZD)V", (void*) setMockOrientation }, + { "nativeOnOrientationChange", "(Landroid/webkit/WebViewCore;ZDZDZD)V", (void*) onOrientationChange } }; int register_device_orientation_manager(JNIEnv* env) |
