summaryrefslogtreecommitdiffstats
path: root/WebKit/android/WebCoreSupport
diff options
context:
space:
mode:
Diffstat (limited to 'WebKit/android/WebCoreSupport')
-rw-r--r--WebKit/android/WebCoreSupport/CookieClient.h46
-rw-r--r--WebKit/android/WebCoreSupport/MediaPlayerPrivateAndroid.cpp19
-rw-r--r--WebKit/android/WebCoreSupport/PlatformBridge.cpp66
3 files changed, 129 insertions, 2 deletions
diff --git a/WebKit/android/WebCoreSupport/CookieClient.h b/WebKit/android/WebCoreSupport/CookieClient.h
new file mode 100644
index 0000000..56d9382
--- /dev/null
+++ b/WebKit/android/WebCoreSupport/CookieClient.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2007, The Android Open Source Project
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef COOKIE_CLIENT_H
+#define COOKIE_CLIENT_H
+
+#include <KURL.h>
+#include <PlatformString.h>
+
+using namespace WebCore;
+
+namespace android {
+
+class CookieClient {
+
+public:
+ virtual ~CookieClient() {}
+ virtual void setCookies(const KURL& url, const String& value) = 0;
+ virtual String cookies(const KURL& url) = 0;
+ virtual bool cookiesEnabled() = 0;
+};
+
+}
+#endif
diff --git a/WebKit/android/WebCoreSupport/MediaPlayerPrivateAndroid.cpp b/WebKit/android/WebCoreSupport/MediaPlayerPrivateAndroid.cpp
index 00e973e..1bb8802 100644
--- a/WebKit/android/WebCoreSupport/MediaPlayerPrivateAndroid.cpp
+++ b/WebKit/android/WebCoreSupport/MediaPlayerPrivateAndroid.cpp
@@ -121,7 +121,7 @@ bool MediaPlayerPrivate::hasAudio() const
bool MediaPlayerPrivate::hasVideo() const
{
- return false;
+ return m_hasVideo;
}
void MediaPlayerPrivate::setVisible(bool visible)
@@ -282,6 +282,7 @@ MediaPlayerPrivate::MediaPlayerPrivate(MediaPlayer* player)
m_duration(6000),
m_currentTime(0),
m_paused(true),
+ m_hasVideo(false),
m_readyState(MediaPlayer::HaveNothing),
m_networkState(MediaPlayer::Empty),
m_poster(0),
@@ -352,6 +353,7 @@ void MediaPlayerPrivate::onPrepared(int duration, int width, int height) {
m_duration = duration / 1000.0f;
m_naturalSize = IntSize(width, height);
m_naturalSizeUnknown = false;
+ m_hasVideo = true;
m_player->durationChanged();
m_player->sizeChanged();
}
@@ -361,6 +363,7 @@ void MediaPlayerPrivate::onEnded() {
m_player->timeChanged();
m_paused = true;
m_currentTime = 0;
+ m_hasVideo = false;
m_networkState = MediaPlayer::Idle;
m_readyState = MediaPlayer::HaveNothing;
}
@@ -379,6 +382,11 @@ void MediaPlayerPrivate::onPosterFetched(SkBitmap* poster) {
}
}
+void MediaPlayerPrivate::onTimeupdate(int position) {
+ m_currentTime = position / 1000.0f;
+ m_player->timeChanged();
+}
+
}
namespace android {
@@ -408,6 +416,13 @@ static void OnPosterFetched(JNIEnv* env, jobject obj, jobject poster, int pointe
player->onPosterFetched(posterNative);
}
+static void OnTimeupdate(JNIEnv* env, jobject obj, int position, int pointer) {
+ if (pointer) {
+ WebCore::MediaPlayerPrivate* player = reinterpret_cast<WebCore::MediaPlayerPrivate*>(pointer);
+ player->onTimeupdate(position);
+ }
+}
+
/*
* JNI registration
*/
@@ -418,6 +433,8 @@ static JNINativeMethod g_MediaPlayerMethods[] = {
(void*) OnEnded },
{ "nativeOnPosterFetched", "(Landroid/graphics/Bitmap;I)V",
(void*) OnPosterFetched },
+ { "nativeOnTimeupdate", "(II)V",
+ (void*) OnTimeupdate },
};
int register_mediaplayer(JNIEnv* env)
diff --git a/WebKit/android/WebCoreSupport/PlatformBridge.cpp b/WebKit/android/WebCoreSupport/PlatformBridge.cpp
index e93d3da..f36ecf7 100644
--- a/WebKit/android/WebCoreSupport/PlatformBridge.cpp
+++ b/WebKit/android/WebCoreSupport/PlatformBridge.cpp
@@ -24,11 +24,14 @@
*/
#include "config.h"
-#include "PlatformBridge.h"
+#include <PlatformBridge.h>
+#include "CookieClient.h"
#include "JavaSharedClient.h"
#include "KeyGeneratorClient.h"
#include "WebViewCore.h"
+#include <wtf/android/AndroidThreading.h>
+#include <wtf/MainThread.h>
using namespace android;
@@ -68,4 +71,65 @@ String PlatformBridge::getSignedPublicKeyAndChallengeString(unsigned index, cons
return client->getSignedPublicKeyAndChallengeString(index, challenge, url);
}
+void PlatformBridge::setCookies(const KURL& url, const String& value)
+{
+ CookieClient* client = JavaSharedClient::GetCookieClient();
+ if (!client)
+ return;
+
+ client->setCookies(url, value);
+}
+
+String PlatformBridge::cookies(const KURL& url)
+{
+ CookieClient* client = JavaSharedClient::GetCookieClient();
+ if (!client)
+ return String();
+
+ return client->cookies(url);
+}
+
+bool PlatformBridge::cookiesEnabled()
+{
+ CookieClient* client = JavaSharedClient::GetCookieClient();
+ if (!client)
+ return false;
+
+ return client->cookiesEnabled();
}
+
+bool PlatformBridge::isWebViewPaused()
+{
+ return WebViewCore::isPaused();
+}
+
+} // namespace WebCore
+
+
+// This is the implementation of AndroidThreading, which is declared in
+// JavaScriptCore/wtf/android/AndroidThreading.h. It is provided here, rather
+// than in its own source file, to avoid linker problems.
+//
+// By default, when building a shared library, the linker strips from static
+// libraries any compilation units which do not contain any code referenced from
+// that static library. Since
+// AndroidThreading::scheduleDispatchFunctionsOnMainThread is not referenced
+// from libwebcore.a, implementing it in its own compilation unit results in it
+// being stripped. This stripping can be avoided by using the linker option
+// --whole-archive for libwebcore.a, but this adds considerably to the size of
+// libwebcore.so.
+
+namespace WTF {
+
+// Callback in the main thread.
+static void timeoutFired(void*)
+{
+ dispatchFunctionsFromMainThread();
+}
+
+void AndroidThreading::scheduleDispatchFunctionsOnMainThread()
+{
+ JavaSharedClient::EnqueueFunctionPtr(timeoutFired, 0);
+}
+
+} // namespace WTF