summaryrefslogtreecommitdiffstats
path: root/WebKit/android/plugins/PluginWidgetAndroid.cpp
diff options
context:
space:
mode:
authorDerek Sollenberger <djsollen@google.com>2009-09-22 14:59:46 -0400
committerDerek Sollenberger <djsollen@google.com>2009-09-22 16:07:58 -0400
commite23a6d30242a5dbcdce40e708e0f97b21d06c2af (patch)
tree1b1d6a8340d902c0ee79be227c2afbb330eb03e0 /WebKit/android/plugins/PluginWidgetAndroid.cpp
parentc6fbc06882c120f5f51090203775eb0421550d13 (diff)
downloadexternal_webkit-e23a6d30242a5dbcdce40e708e0f97b21d06c2af.zip
external_webkit-e23a6d30242a5dbcdce40e708e0f97b21d06c2af.tar.gz
external_webkit-e23a6d30242a5dbcdce40e708e0f97b21d06c2af.tar.bz2
adding API to enable plugins to request full screen mode
Change-Id: Ib3373af6ff127399d1d0846ba30a4275da5b3133
Diffstat (limited to 'WebKit/android/plugins/PluginWidgetAndroid.cpp')
-rw-r--r--WebKit/android/plugins/PluginWidgetAndroid.cpp54
1 files changed, 21 insertions, 33 deletions
diff --git a/WebKit/android/plugins/PluginWidgetAndroid.cpp b/WebKit/android/plugins/PluginWidgetAndroid.cpp
index 81e9650..fdc4016 100644
--- a/WebKit/android/plugins/PluginWidgetAndroid.cpp
+++ b/WebKit/android/plugins/PluginWidgetAndroid.cpp
@@ -34,6 +34,7 @@
#include "ScrollView.h"
#include "SkANP.h"
#include "SkFlipPixelRef.h"
+#include "SkString.h"
#include "WebViewCore.h"
PluginWidgetAndroid::PluginWidgetAndroid(WebCore::PluginView* view)
@@ -75,48 +76,21 @@ static SkBitmap::Config computeConfig(bool isTransparent) {
: SkBitmap::kRGB_565_Config;
}
-/*
- * Returns the name of the apk that contains this plugin. The caller is
- * responsible for calling free(...) on the char* that is returned.
- */
-static char* getPackageName(PluginPackage* pluginPackage) {
-
- // get the directory where the plugin library is stored. The structure of
- // the path looks like /data/app/plugin.package.name/lib.
- const char* pluginDir = pluginPackage->parentDirectory().latin1().data();
-
- // trim "/lib" off the directory name and store in tempString
- int length = strlen(pluginDir) - 4; // -4 for "/lib"
- char* tempString = (char*) malloc(length + 1); // +1 for null termination
- strncpy(tempString, pluginDir, length);
- tempString[length] = '\0';
-
- // find the final '/' in tempString
- char* result = strrchr(tempString, '/');
-
- char* packageName = NULL;
- if (result) {
- // duplicate the tempString without the leading '/'
- packageName = strdup(result+1);
- }
-
- // free extra memory and return the package name
- free(tempString);
- return packageName;
-}
-
void PluginWidgetAndroid::setWindow(NPWindow* window, bool isTransparent) {
m_pluginWindow = window;
if (m_drawingModel == kSurface_ANPDrawingModel) {
if (!m_childView) {
IntPoint docPoint = frameToDocumentCoords(window->x, window->y);
- char* packageName = getPackageName(m_pluginView->plugin());
- m_childView = m_core->createSurface(packageName, m_javaClassName,
+
+ const String& libName = m_pluginView->plugin()->path();
+ SkString skLibName;
+ skLibName.setUTF16(libName.characters(), libName.length());
+
+ m_childView = m_core->createSurface(skLibName.c_str(), m_javaClassName,
m_pluginView->instance(),
docPoint.x(), docPoint.y(),
window->width, window->height);
- free(packageName);
}
} else {
m_flipPixelRef->safeUnref();
@@ -142,6 +116,20 @@ bool PluginWidgetAndroid::setPluginStubJavaClassName(const char* className) {
return (m_javaClassName != NULL);
}
+void PluginWidgetAndroid::requestFullScreenMode() {
+
+ if (!m_javaClassName) {
+ return;
+ }
+
+ const String& libName = m_pluginView->plugin()->path();
+ SkString skLibName;
+ skLibName.setUTF16(libName.characters(), libName.length());
+
+ m_core->startFullScreenPluginActivity(skLibName.c_str(), m_javaClassName,
+ m_pluginView->instance());
+}
+
bool PluginWidgetAndroid::setDrawingModel(ANPDrawingModel model) {
// disallow the surface drawing model if no java class name has been given