summaryrefslogtreecommitdiff
path: root/indra/llplugin
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llplugin')
-rw-r--r--[-rwxr-xr-x]indra/llplugin/CMakeLists.txt0
-rw-r--r--[-rwxr-xr-x]indra/llplugin/llpluginclassmedia.cpp75
-rw-r--r--[-rwxr-xr-x]indra/llplugin/llpluginclassmedia.h33
-rw-r--r--[-rwxr-xr-x]indra/llplugin/llpluginclassmediaowner.h3
-rw-r--r--[-rwxr-xr-x]indra/llplugin/llplugincookiestore.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llplugin/llplugincookiestore.h0
-rw-r--r--[-rwxr-xr-x]indra/llplugin/llplugininstance.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llplugin/llplugininstance.h0
-rw-r--r--[-rwxr-xr-x]indra/llplugin/llpluginmessage.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llplugin/llpluginmessage.h0
-rw-r--r--[-rwxr-xr-x]indra/llplugin/llpluginmessageclasses.h0
-rw-r--r--[-rwxr-xr-x]indra/llplugin/llpluginmessagepipe.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llplugin/llpluginmessagepipe.h0
-rw-r--r--[-rwxr-xr-x]indra/llplugin/llpluginprocesschild.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llplugin/llpluginprocesschild.h0
-rw-r--r--[-rwxr-xr-x]indra/llplugin/llpluginprocessparent.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llplugin/llpluginprocessparent.h0
-rw-r--r--[-rwxr-xr-x]indra/llplugin/llpluginsharedmemory.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llplugin/llpluginsharedmemory.h0
-rw-r--r--[-rwxr-xr-x]indra/llplugin/slplugin/CMakeLists.txt0
-rw-r--r--[-rwxr-xr-x]indra/llplugin/slplugin/slplugin-objc.h0
-rw-r--r--[-rwxr-xr-x]indra/llplugin/slplugin/slplugin-objc.mm0
-rw-r--r--[-rwxr-xr-x]indra/llplugin/slplugin/slplugin.cpp0
-rw-r--r--[-rwxr-xr-x]indra/llplugin/slplugin/slplugin_info.plist0
-rw-r--r--[-rwxr-xr-x]indra/llplugin/tests/llplugincookiestore_test.cpp2
25 files changed, 79 insertions, 34 deletions
diff --git a/indra/llplugin/CMakeLists.txt b/indra/llplugin/CMakeLists.txt
index 441becbae0..441becbae0 100755..100644
--- a/indra/llplugin/CMakeLists.txt
+++ b/indra/llplugin/CMakeLists.txt
diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp
index 41ace62964..f2a4705717 100755..100644
--- a/indra/llplugin/llpluginclassmedia.cpp
+++ b/indra/llplugin/llpluginclassmedia.cpp
@@ -79,6 +79,7 @@ bool LLPluginClassMedia::init(const std::string &launcher_filename, const std::s
// Queue up the media init message -- it will be sent after all the currently queued messages.
LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "init");
+ message.setValue("target", mTarget);
sendMessage(message);
mPlugin->init(launcher_filename, plugin_filename, debug);
@@ -148,7 +149,7 @@ void LLPluginClassMedia::reset()
mProgressPercent = 0;
mClickURL.clear();
mClickTarget.clear();
- mClickTargetType = TARGET_NONE;
+ mClickUUID.clear();
// media_time class
mCurrentTime = 0.0f;
@@ -674,6 +675,18 @@ F64 LLPluginClassMedia::getCPUUsage()
return result;
}
+void LLPluginClassMedia::sendPickFileResponse(const std::string &file)
+{
+ LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "pick_file_response");
+ message.setValue("file", file);
+ if(mPlugin->isBlocked())
+ {
+ // If the plugin sent a blocking pick-file request, the response should unblock it.
+ message.setValueBoolean("blocking_response", true);
+ }
+ sendMessage(message);
+}
+
void LLPluginClassMedia::cut()
{
LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "edit_cut");
@@ -720,24 +733,9 @@ void LLPluginClassMedia::setJavascriptEnabled(const bool enabled)
sendMessage(message);
}
-LLPluginClassMedia::ETargetType getTargetTypeFromLLQtWebkit(int target_type)
+void LLPluginClassMedia::setTarget(const std::string &target)
{
- // convert a LinkTargetType value from llqtwebkit to an ETargetType
- // so that we don't expose the llqtwebkit header in viewer code
- switch (target_type)
- {
- case LLQtWebKit::LTT_TARGET_NONE:
- return LLPluginClassMedia::TARGET_NONE;
-
- case LLQtWebKit::LTT_TARGET_BLANK:
- return LLPluginClassMedia::TARGET_BLANK;
-
- case LLQtWebKit::LTT_TARGET_EXTERNAL:
- return LLPluginClassMedia::TARGET_EXTERNAL;
-
- default:
- return LLPluginClassMedia::TARGET_OTHER;
- }
+ mTarget = target;
}
/* virtual */
@@ -950,6 +948,10 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message)
mMediaName = message.getValue("name");
mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_NAME_CHANGED);
}
+ else if(message_name == "pick_file")
+ {
+ mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_PICK_FILE_REQUEST);
+ }
else
{
LL_WARNS("Plugin") << "Unknown " << message_name << " class message: " << message_name << LL_ENDL;
@@ -992,15 +994,13 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message)
{
mClickURL = message.getValue("uri");
mClickTarget = message.getValue("target");
- U32 target_type = message.getValueU32("target_type");
- mClickTargetType = ::getTargetTypeFromLLQtWebkit(target_type);
+ mClickUUID = message.getValue("uuid");
mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_CLICK_LINK_HREF);
}
else if(message_name == "click_nofollow")
{
mClickURL = message.getValue("uri");
mClickTarget.clear();
- mClickTargetType = TARGET_NONE;
mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_CLICK_LINK_NOFOLLOW);
}
else if(message_name == "cookie_set")
@@ -1010,6 +1010,20 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message)
mOwner->handleCookieSet(this, message.getValue("cookie"));
}
}
+ else if(message_name == "close_request")
+ {
+ mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_CLOSE_REQUEST);
+ }
+ else if(message_name == "geometry_change")
+ {
+ mClickUUID = message.getValue("uuid");
+ mGeometryX = message.getValueS32("x");
+ mGeometryY = message.getValueS32("y");
+ mGeometryWidth = message.getValueS32("width");
+ mGeometryHeight = message.getValueS32("height");
+
+ mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_GEOMETRY_CHANGE);
+ }
else
{
LL_WARNS("Plugin") << "Unknown " << message_name << " class message: " << message_name << LL_ENDL;
@@ -1164,6 +1178,25 @@ void LLPluginClassMedia::setBrowserUserAgent(const std::string& user_agent)
sendMessage(message);
}
+void LLPluginClassMedia::proxyWindowOpened(const std::string &target, const std::string &uuid)
+{
+ LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "proxy_window_opened");
+
+ message.setValue("target", target);
+ message.setValue("uuid", uuid);
+
+ sendMessage(message);
+}
+
+void LLPluginClassMedia::proxyWindowClosed(const std::string &uuid)
+{
+ LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "proxy_window_closed");
+
+ message.setValue("uuid", uuid);
+
+ sendMessage(message);
+}
+
void LLPluginClassMedia::crashPlugin()
{
LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_INTERNAL, "crash");
diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h
index 66853c9940..0e086eb4fb 100755..100644
--- a/indra/llplugin/llpluginclassmedia.h
+++ b/indra/llplugin/llpluginclassmedia.h
@@ -161,6 +161,8 @@ public:
void setLowPrioritySizeLimit(int size);
F64 getCPUUsage();
+
+ void sendPickFileResponse(const std::string &file);
// Valid after a MEDIA_EVENT_CURSOR_CHANGED event
std::string getCursorName() const { return mCursorName; };
@@ -181,7 +183,8 @@ public:
void setLanguageCode(const std::string &language_code);
void setPluginsEnabled(const bool enabled);
void setJavascriptEnabled(const bool enabled);
-
+ void setTarget(const std::string &target);
+
///////////////////////////////////
// media browser class functions
bool pluginSupportsMediaBrowser(void);
@@ -198,6 +201,8 @@ public:
void browse_back();
void set_status_redirect(int code, const std::string &url);
void setBrowserUserAgent(const std::string& user_agent);
+ void proxyWindowOpened(const std::string &target, const std::string &uuid);
+ void proxyWindowClosed(const std::string &uuid);
// This is valid after MEDIA_EVENT_NAVIGATE_BEGIN or MEDIA_EVENT_NAVIGATE_COMPLETE
std::string getNavigateURI() const { return mNavigateURI; };
@@ -223,16 +228,14 @@ public:
// This is valid after MEDIA_EVENT_CLICK_LINK_HREF
std::string getClickTarget() const { return mClickTarget; };
- typedef enum
- {
- TARGET_NONE, // empty href target string
- TARGET_BLANK, // target to open link in user's preferred browser
- TARGET_EXTERNAL, // target to open link in external browser
- TARGET_OTHER // nonempty and unsupported target type
- }ETargetType;
-
- // This is valid after MEDIA_EVENT_CLICK_LINK_HREF
- ETargetType getClickTargetType() const { return mClickTargetType; };
+ // This is valid during MEDIA_EVENT_CLICK_LINK_HREF and MEDIA_EVENT_GEOMETRY_CHANGE
+ std::string getClickUUID() const { return mClickUUID; };
+
+ // These are valid during MEDIA_EVENT_GEOMETRY_CHANGE
+ S32 getGeometryX() const { return mGeometryX; };
+ S32 getGeometryY() const { return mGeometryY; };
+ S32 getGeometryWidth() const { return mGeometryWidth; };
+ S32 getGeometryHeight() const { return mGeometryHeight; };
std::string getMediaName() const { return mMediaName; };
std::string getMediaDescription() const { return mMediaDescription; };
@@ -352,6 +355,8 @@ protected:
LLColor4 mBackgroundColor;
+ std::string mTarget;
+
/////////////////////////////////////////
// media_browser class
std::string mNavigateURI;
@@ -364,7 +369,11 @@ protected:
std::string mLocation;
std::string mClickURL;
std::string mClickTarget;
- ETargetType mClickTargetType;
+ std::string mClickUUID;
+ S32 mGeometryX;
+ S32 mGeometryY;
+ S32 mGeometryWidth;
+ S32 mGeometryHeight;
/////////////////////////////////////////
// media_time class
diff --git a/indra/llplugin/llpluginclassmediaowner.h b/indra/llplugin/llpluginclassmediaowner.h
index 5669b81fd1..334c72fd8c 100755..100644
--- a/indra/llplugin/llpluginclassmediaowner.h
+++ b/indra/llplugin/llpluginclassmediaowner.h
@@ -59,6 +59,9 @@ public:
MEDIA_EVENT_LOCATION_CHANGED, // browser location (URL) has changed (maybe due to internal navagation/frames/etc)
MEDIA_EVENT_CLICK_LINK_HREF, // I'm not entirely sure what the semantics of these two are
MEDIA_EVENT_CLICK_LINK_NOFOLLOW,
+ MEDIA_EVENT_CLOSE_REQUEST, // The plugin requested its window be closed (currently hooked up to javascript window.close in webkit)
+ MEDIA_EVENT_PICK_FILE_REQUEST, // The plugin wants the user to pick a file
+ MEDIA_EVENT_GEOMETRY_CHANGE, // The plugin requested its window geometry be changed (per the javascript window interface)
MEDIA_EVENT_PLUGIN_FAILED_LAUNCH, // The plugin failed to launch
MEDIA_EVENT_PLUGIN_FAILED // The plugin died unexpectedly
diff --git a/indra/llplugin/llplugincookiestore.cpp b/indra/llplugin/llplugincookiestore.cpp
index da770c5f2e..da770c5f2e 100755..100644
--- a/indra/llplugin/llplugincookiestore.cpp
+++ b/indra/llplugin/llplugincookiestore.cpp
diff --git a/indra/llplugin/llplugincookiestore.h b/indra/llplugin/llplugincookiestore.h
index a93f0c14f0..a93f0c14f0 100755..100644
--- a/indra/llplugin/llplugincookiestore.h
+++ b/indra/llplugin/llplugincookiestore.h
diff --git a/indra/llplugin/llplugininstance.cpp b/indra/llplugin/llplugininstance.cpp
index 44e3b4950f..44e3b4950f 100755..100644
--- a/indra/llplugin/llplugininstance.cpp
+++ b/indra/llplugin/llplugininstance.cpp
diff --git a/indra/llplugin/llplugininstance.h b/indra/llplugin/llplugininstance.h
index c11d5ab5d4..c11d5ab5d4 100755..100644
--- a/indra/llplugin/llplugininstance.h
+++ b/indra/llplugin/llplugininstance.h
diff --git a/indra/llplugin/llpluginmessage.cpp b/indra/llplugin/llpluginmessage.cpp
index f76d848a70..f76d848a70 100755..100644
--- a/indra/llplugin/llpluginmessage.cpp
+++ b/indra/llplugin/llpluginmessage.cpp
diff --git a/indra/llplugin/llpluginmessage.h b/indra/llplugin/llpluginmessage.h
index cbd31e0964..cbd31e0964 100755..100644
--- a/indra/llplugin/llpluginmessage.h
+++ b/indra/llplugin/llpluginmessage.h
diff --git a/indra/llplugin/llpluginmessageclasses.h b/indra/llplugin/llpluginmessageclasses.h
index 01fddb92c5..01fddb92c5 100755..100644
--- a/indra/llplugin/llpluginmessageclasses.h
+++ b/indra/llplugin/llpluginmessageclasses.h
diff --git a/indra/llplugin/llpluginmessagepipe.cpp b/indra/llplugin/llpluginmessagepipe.cpp
index 89f8b44569..89f8b44569 100755..100644
--- a/indra/llplugin/llpluginmessagepipe.cpp
+++ b/indra/llplugin/llpluginmessagepipe.cpp
diff --git a/indra/llplugin/llpluginmessagepipe.h b/indra/llplugin/llpluginmessagepipe.h
index 1b0a08254b..1b0a08254b 100755..100644
--- a/indra/llplugin/llpluginmessagepipe.h
+++ b/indra/llplugin/llpluginmessagepipe.h
diff --git a/indra/llplugin/llpluginprocesschild.cpp b/indra/llplugin/llpluginprocesschild.cpp
index d1cf91b253..d1cf91b253 100755..100644
--- a/indra/llplugin/llpluginprocesschild.cpp
+++ b/indra/llplugin/llpluginprocesschild.cpp
diff --git a/indra/llplugin/llpluginprocesschild.h b/indra/llplugin/llpluginprocesschild.h
index 1430ad7a5d..1430ad7a5d 100755..100644
--- a/indra/llplugin/llpluginprocesschild.h
+++ b/indra/llplugin/llpluginprocesschild.h
diff --git a/indra/llplugin/llpluginprocessparent.cpp b/indra/llplugin/llpluginprocessparent.cpp
index 3589b22a77..3589b22a77 100755..100644
--- a/indra/llplugin/llpluginprocessparent.cpp
+++ b/indra/llplugin/llpluginprocessparent.cpp
diff --git a/indra/llplugin/llpluginprocessparent.h b/indra/llplugin/llpluginprocessparent.h
index 4dff835b6a..4dff835b6a 100755..100644
--- a/indra/llplugin/llpluginprocessparent.h
+++ b/indra/llplugin/llpluginprocessparent.h
diff --git a/indra/llplugin/llpluginsharedmemory.cpp b/indra/llplugin/llpluginsharedmemory.cpp
index 9c18b410c7..9c18b410c7 100755..100644
--- a/indra/llplugin/llpluginsharedmemory.cpp
+++ b/indra/llplugin/llpluginsharedmemory.cpp
diff --git a/indra/llplugin/llpluginsharedmemory.h b/indra/llplugin/llpluginsharedmemory.h
index 00c54ef08c..00c54ef08c 100755..100644
--- a/indra/llplugin/llpluginsharedmemory.h
+++ b/indra/llplugin/llpluginsharedmemory.h
diff --git a/indra/llplugin/slplugin/CMakeLists.txt b/indra/llplugin/slplugin/CMakeLists.txt
index 08d35f9ae7..08d35f9ae7 100755..100644
--- a/indra/llplugin/slplugin/CMakeLists.txt
+++ b/indra/llplugin/slplugin/CMakeLists.txt
diff --git a/indra/llplugin/slplugin/slplugin-objc.h b/indra/llplugin/slplugin/slplugin-objc.h
index 4e55cb14cf..4e55cb14cf 100755..100644
--- a/indra/llplugin/slplugin/slplugin-objc.h
+++ b/indra/llplugin/slplugin/slplugin-objc.h
diff --git a/indra/llplugin/slplugin/slplugin-objc.mm b/indra/llplugin/slplugin/slplugin-objc.mm
index 823e1ebea6..823e1ebea6 100755..100644
--- a/indra/llplugin/slplugin/slplugin-objc.mm
+++ b/indra/llplugin/slplugin/slplugin-objc.mm
diff --git a/indra/llplugin/slplugin/slplugin.cpp b/indra/llplugin/slplugin/slplugin.cpp
index febce9bcb7..febce9bcb7 100755..100644
--- a/indra/llplugin/slplugin/slplugin.cpp
+++ b/indra/llplugin/slplugin/slplugin.cpp
diff --git a/indra/llplugin/slplugin/slplugin_info.plist b/indra/llplugin/slplugin/slplugin_info.plist
index c4597380e0..c4597380e0 100755..100644
--- a/indra/llplugin/slplugin/slplugin_info.plist
+++ b/indra/llplugin/slplugin/slplugin_info.plist
diff --git a/indra/llplugin/tests/llplugincookiestore_test.cpp b/indra/llplugin/tests/llplugincookiestore_test.cpp
index c903464c64..ef96c482e5 100755..100644
--- a/indra/llplugin/tests/llplugincookiestore_test.cpp
+++ b/indra/llplugin/tests/llplugincookiestore_test.cpp
@@ -117,7 +117,7 @@ namespace tut
typedef test_group<LLPluginCookieStoreFixture> factory;
typedef factory::object object;
- factory tf("LLPluginCookieStore test");
+ factory tf("LLPluginCookieStore");
// Tests
template<> template<>