Age | Commit message (Collapse) | Author |
|
|
|
|
|
place - just leaking")
Added slplugin-objc.mm.
Made SLPlugin do the cocoa setup during initialization, and create/delete an
autorelease pool each time through its main loop. This should make plugin code
that's using autorelease correctly not leak.
Fixed a bug in the version of setupCocoa() used in the viewer (it was never
setting its "inited" variable).
|
|
|
|
|
|
|
|
Use this workaround for now.
|
|
[secondlife-bin llpluginclassmedia.cpp:158]
|
|
|
|
Use LLMutexLock (stack-based locker/unlocker) for the straightforward cases instead of explicit lock()/unlock().
There are still a couple of cases (one overlapping lock lifetime and two loops that unlock the mutex to call another function inside the loop) where I'm leaving explicit lock/unlock calls.
Rename LLPluginProcessParent::sPollThread to sReadThread, for consistency.
Made the LLPluginProcessParent destructor hold mIncomingQueueMutex while removing the instance from the global list -- this should prevent a possible race condition in LLPluginProcessParent::poll().
Removed a redundant check when calling LLPluginProcessParent::setUseReadThread().
|
|
events to blocked plugins.
|
|
LLPluginProcessParent can now optionally use a separate thread for reading messages from plugin sockets. If this is enabled, it will spawn a single thread and use apr_pollset_poll to wake up the thread when incoming data arrives instead of polling all the descriptors round-robin every frame. This should be somewhat more efficient, and should also allow blocking requests from plugins to be serviced much more quickly (once we start using them). This is currently disabled by default, until it's had a bit more focused testing on multiple platforms.
Hooked up the switch to use the message read thread to the PluginUseReadThread debug setting and an item in the Advanced menu in the viewer, and to a checkbox in the UI in llmediaplugintest.
Updated some debug logging in the plugin system to have appropriate tags and not log dire-looking warnings during normal operation.
LLPluginProcessParent now once again explicitly kills plugin processes (instead of just closing their sockets and waiting for them to exit). The problem we were attempting to solve by not doing the kill (letting the webkit plugin write its cookie file on exit) has been solved another way.
LLPluginProcessParent::sendMessage() now attempts to write the outgoing message to the socket immediately instead of waiting for the next frame. This should reduce the latency of sending plugin messages.
Added a separate fast timer for LLViewerMedia::updateMedia().
|
|
|
|
WaitNextEvent() for the OS X 10.6 SDK
Replaced the deprecated WaitNextEvent() call with ReceiveNextEvent() and SendEventToEventTarget() as a basic event loop in slplugin.cpp
|
|
This requires some cooperation between the plugin and the host, and will only work for specific messages.
The way it works is as follows:
* the plugin sends a message containing the key "blocking_request" (with any value)
* this will cause the "send message" function to block (continuing to pull incoming messages off the network socket and queue them) until it receives a message from the host containing the key "blocking_response"
** NOTE: if the plugin sends a blocking_request that isn't set up to cause the host to send back a blocking_response, it will block forever
* the blocking_response message will be handed to the plugin's "receive message" function _immediately_ (before the "send message" function returns)
** this means that the plugin can extract response data for use by the the code that sent the message (but is still blocked inside the "send message" call)
** NOTE: this BREAKS the invariant stating that the plugin's "receive message" function will never be called recursively, and the plugin MUST be prepared to deal with this
* after the plugin finishes processing the blocking_response message, the "send message" function that was called with the blocking_request message will return to the plugin
* any queued messages will be delivered after the outer invocation of the plugin's "receive message" function returns (as normal)
Inside the viewer, the code can tell when a plugin is in this blocked state by calling LLPluginProcessParent::isBlocked(). LLPluginClassMedia uses this to avoid sending mouse-move and size-change messages to blocked plugins.
|
|
in front)
Made SLPlugin into a bundled app on the Mac (this is apparently necessary for the plugin's window to be allowed to get focus).
Changed the Info.plist key SLPlugin uses to keep itself out of the dock from LSBackgroundOnly to LSUIElement (this allows it to get focus and display UI).
Added some Mac-specific code to slplugin.cpp to manipulate window layers and bring the plugin process to the foreground when something in the process opens a window, and to bring the viewer to the foreground when the last window in the process is closed.
|
|
Added "HttpOnly" to the allowed field names in LLPluginCookieStore::Cookie::parse(). (This was the actual cause of the failure -- cookies with this field in them were silently failing to parse.)
Added some LL_WARNS logging on this sort of cookie parse failure, which will make similar problems much easier to track down in future.
Also added tags to most of the logging in llplugincookiestore.cpp to make it easier to selectively enable it when debugging.
Added a cookie with all allowable field names to the unit test.
Reviewed by Sam at http://codereview.lindenlab.com/1247014
|
|
|
|
|
|
when adding multiple cookies with setCookies(), setAllCookies(), and setCookiesFromHost().
|
|
Extract openid_url and openid_token tokens from the login response in process_login_success_response() and send them to LLViewerMedia if they're present.
Added LLViewerMedia::openIDSetup() to receive openid_url and openid_token, and added code to LLViewerMedia to do a POST with LLHTTPClient, retrieve the resulting cookie, and push it into the central cookie store. Also made sure the OpenID cookie gets re-added when the cookie store is cleared.
Added LLPluginCookieStore::setCookiesFromHost() to properly add a cookie that may not have a domain set. Made LLPluginCookieStore::Cookie::parse() add missing domain and path fields to cookies as necessary.
Fixed an issue where carriage returns in the string passed to LLPluginCookieStore::setCookies() or LLPluginCookieStore::setCookiesFromHost() would cause a parse failure.
Reviewed by gino and callum at http://codereview.lindenlab.com/1254001
|
|
Added LLPluginCookieStore, which manages the central list of cookies.
New Mac and Windows versions of llqtwebkit, built from the tip of the cookie-api branch on http://bitbucket.org/lindenlab/llqtwebkit/ (currently revision f35a5eab8c2f).
Added "set_cookies" and "cookie_set" messages to the media_browser message class in the plugin API, and made the webkit plugin use them appropriately.
Added methods to LLViewerMedia to read/write the cookie file and add/remove individual cookies.
Added hooks to read/write the cookie file (plugin_cookies.txt) in the same places as the location history (idle_startup() in llstartup.cpp and LLAppViewer::cleanup(), respectively).
Reviewed by Richard at http://codereview.lindenlab.com/1006003
|
|
disable Web plugins via prefs" and EXT-6401 "Add feature to disable Javascript via prefs"
Apologies for the multiple commit of Jiras - these changes are closely related and impossible to commit deparately
Reviewed by Monroe
|
|
LLPluginClassMedia queue it up before initializing its LLPluginProcessParent.
Made all existing plugins send their texture_params message from this init message instead of the LLPLUGIN_MESSAGE_CLASS_BASE "init" message. (This ensures that they won't start to receive 'size_change' messages until after the init has happened.)
Added "set_user_data_path" and "set_language_code" messages to LLPluginClassMedia.
Made webkit plugin deal with the new messages, when they're sent before it receives the media "init".
Removed the user_data_path and language_code arguments from the init function calls throughout the hierarchy.
Made LLViewerMediaImpl queue up the language code and user data path messages before initializing the media.
Reviewed by Callum at http://codereview.lindenlab.com/687006 .
|
|
(implemented via JavaScript - not in ua string)
(for B5) Fix for EXT-5314 "Inworld Browser blanks out at credit card entry"
Note: also includes an update to install.xml that points to a new version of LLQtWebKit that is required for these fixes
|
|
Checker: FORWARD_NULL
Function: LLPluginMessagePipe::pump(double)
File: /indra/llplugin/llpluginmessagepipe.cpp
|
|
Checker: FORWARD_NULL
Function: LLPluginProcessChild::idle()
File: /indra/llplugin/llpluginprocesschild.cpp
|
|
|
|
llqtwebkit code.
only affects linux. may harm webkit functionality temporarily. to be backed-out.
|
|
|
|
Checker: UNINIT_CTOR
Function: LLPluginProcessParent::LLPluginProcessParent(LLPluginProcessParentOwner *)
File: /indra/llplugin/llpluginprocessparent.cpp
|
|
Checker: UNINIT_CTOR
Function: LLPluginClassMedia::LLPluginClassMedia(LLPluginClassMediaOwner *)
File: /indra/llplugin/llpluginclassmedia.cpp
|
|
Checker: UNINIT_CTOR
Function: LLPluginProcessChild::LLPluginProcessChild()
File: /indra/llplugin/llpluginprocesschild.cpp
|
|
|
|
Checker: RESOURCE_LEAK
Function: LLPluginProcessChild::receiveMessageRaw(const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
File: /indra/llplugin/llpluginprocesschild.cpp
|
|
Checker: BAD_COMPARE
Function: checkExceptionHandler()
File: /indra/llplugin/slplugin/slplugin.cpp
(not a bug, but rearranged a little)
|
|
Reference to new mac build of llqtwebkit (from revision 5e61bf24915f in https://hg.lindenlab.com/monroe/llqtwebkit-4.6).
|
|
Added an LLSD argument to LLPluginClassMedia::keyEvent() and LLPluginClassMedia::textInput() which contains the native key data.
Made LLViewerMediaImpl retrieve the native key data and pass it to keyEvent and textInput.
Added a native_key_data parameter to the text_event and key_event messages.
Made the webkit plugin extract the native_key_data parameter and pass it to the internal keyEvent() and unicodeInput() functions.
Fixed LLMediaPluginTest to match function signature change to LLPluginClassMedia::keyEvent().
|
|
|
|
Didn't want to introduce another linker dependency so I specified the color directly.
|
|
Support href links in web views that have a target attribute set to
"_blank". This will open the link in the user's preferred browser
(internal or external, as defined in Prefs). This change relies on the
new llqtwebkit package that has just been pushed.
Also updated the hardcoded Qt version number in the About floater.
|
|
search/help windows. This should address EXT-4097.
Added a notion of "background color" to LLViewerMediaImpl and LLPluginClassMedia.
Added background color parameters to the size_change message.
Webkit plugin now sets the background color of the instance from the supplied background color, and navigates to a data: url with that background color instead of about:blank as its initial navigate.
Webkit plugin now no longer waits for the first onPageChanged event
LLViewerMediaImpl now clears the texture to the background color when initializing it.
Made LLMediaCtrl fill with its opaque background color when the media impl isn't set up yet.
Removed the initial data URL from the search and help floaters, since what it was doing is now handled internally by the new background color code.
Reviewed by callum and rick.
|
|
Reviewed by MW
|
|
added an to LLPluginProcessParent that allows callers to adjust the launch and lockup timeouts.
|
|
|
|
|
|
|
|
it by closing the sockets. This lets it do some cleanup before exiting, instead of just getting shot.
|
|
|
|
tree (mostly media stuff)
propagate the parent app's OSUserAppDir (i.e. ~/.secondlife/) all the way down to plugins, if they need persistant user data/settings (like the webkit plugin needs a place to put its cache).
|