mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-05-26 14:18:48 +00:00
be4fef94e8
- Bug 711670: Setup the Mac Application Delegate earlier to respond to URLs clicked in external applications when updates are pending. r=mstange (2471469680) - Bug 1252889: On Windows use a 10 second pause instead of trying to invoke the JIT debugger with MOZ_DEBUG_CHILD_PROCESS. r=jimm (228cd75e4d) - Bug 1253850: On Windows change MOZ_DEBUG_CHILD_PROCESS back to JIT and add MOZ_DEBUG_CHILD_PAUSE for a 10 second pause. r=mchang (83cdaec0a7) - Bug 1259809 - Make CrashReporter::InitChildProcessTmpDir conditional on MOZ_CRASHREPORTER. r=aklotz (19672176dd) - Bug 1176703 - attempt to fix define issues with some compilers/envs, rs=me, CLOSED TREE, bustage (8e6f3a6b94) - Bug 1266292 - Remove unnecessary compiler checks for MSVS 2010 in gfx/2d/. r=bas (9c3acd9f5d) - Bug 1195788 - Set arithmetic composite clamp to true for D2D filter node. r=bas (5ba4191512) - Bug 1248223 - verify that stroke widths are finite for Skia. r=jmuizelaar (1f676f5c24) - Bug 1241918 - remove workarounds for zero-length dash intervals in HelpersSkia.h, r=jrmuizel (ce0665ab77) - crashreporter includes (c64d834706) - Add a driver crash guard to D3D11 DXVA. (bug 1253666, r=mattwoodrow) (8589eef61b) - Bug 1189918 - Theme overrides should work in safe mode for comm-central applications too. r=bsmedberg (535486b4c0) - Disable the WebGL crash guard on Android. (bug 1256371, r=snorp) a=merge (855cc66aef) - Bug 1265273 - Add two missing get_PBrowserParent() null checks. r=jimm. (b5f9ac0967) - Bug 1261599 - null check SendPBrowserConstructor return in ContentParent to avoid crashes on content process shutdown. r=smaug (28e2ad71b5) - Fix D3D11VideoCrashGuard missing a switch case in ContentParent. (bug 1263725, r=mattwoodrow) (07a5b63633) - Bug 1216371 - Load default theme from XPI in safe mode. r=bsmedberg (596bc54a13) - Bug 1216371 - Load default theme from XPI in safe mode. r=bsmedberg (596bc54a13) - Bug 1162965 - Use /dev/shm instead of /tmp for sandbox chroot if possible. r=kang (4fa3c77756) - Bug 1264226: Don't use '_COARSE' Posix clocks if not defined, r=jld (a173b195eb) - Bug 1259273 - Add sys_unlink to seccomp-bpf whitelist. r=jld (72ca2626f6) - Bug 1259283 - Add sys_fchown to seccomp whitelist. r=jld (628f3cd627) - Bug 1253194: Suppress -Wimplicit-fallthrough clang warning for intentional fallthrough in icu_utf.cc (which is imported code). r=bobowen (a503963ff2) - Bug 1257031 - Return more informative error code when encountering invalid integers rather than SEC_ERROR_BAD_DER. r=keeler (7f4955614a) - Bug 1153446 - Replace instances of double spacing with single spacing in nsserrors.properties. r=dkeeler (166f0bd1c4) - Bug 1256530 - Fix compiler warnings about casting to larger size. r=hsivonen (53020d1543) - Bug 1251235 - changed from naked pointers to UniquePtr to prevent resource leak. r=froydnj (953040a377) - Bug 1264887: |nsWifiScannerDBus|: Hold DBusConnection reference in |RefPtr|, r=josh (3d8b9b3f52) - Bug 1212056 - Add virtual dtor to WindowsWifiScannerInterface. r=jdm (ce00cf01e9) - code style (d7fea73856) - Bug 1222170 - fix initialization order in ScopedWLANObject; r=jimm (b515ea0273) - Bug 1204919 - Build osx_corewlan.mm with -Wno-error=objc-method-access to avoid bustage on some machines in warnings-on-errors builds. r=glandium. (f88b02868d) - Bug 1204277 - Disallow warnings in six more directories. r=glandium. (7e249cf4ab) - Bug 1248761 - Destroy VRHMDInfo objects on the compositor thread r=daoshengmu (ccf6af1fec) - Bug 1260530 - Add support for Oculus 1.3 runtime r=daoshengmu (f7ed5abb4f) - Bug 1242005 - Disable C4359 to allow compilation on VS2015; r=kip (71db7148f4) - Bug 1176158 - "Remove unused lang atoms (ko-xxx and x-symbol)" r=vladimir (25e46d1150) - Bug 1176158 - Part 2. Remove unused ko_xxx and x_symbols from gfxGDIFontList. r=jdaggett (9b213333e0) - Bug 1262304 - Add a pref to dump display lists for the content process. r=BenWa (c0a4e56542) - Bug 1180942 - Use cairo's image backend for drawing on linux. r=jrmuizel (83deed801b) - Bug 1254400 - Handle device reset for d3d9. r=dvander (170aaeb272) - Bug 1254400 - Make access to d3d9 device manager thread-safe. r=dvander (a6112d8b84) - Bug 1256547: When the DWM is disabled don't force presentation. r=milan (0fe31bfc50) - Bug 1229988 - verify that reference draw target is created after device reset and log failure in gfxWindowsPlatform::UpdateRenderMode. r=milan (32084a6688) - Bug 1250669. Don't init dwrite fonts if content device creation fails. r=dvander (4a55599c8b) - Include vendor and device ids in content process DXGI adapter matching. (bug 1228905, r=jrmuizel) (c9403d3798) - Bug 1233576. Ensure vsync timestamps are monotonic on Windows 10. r=kats (d075fb7230) - Bug 1249036 Check that DWMFlush executes correctly. r=kats (f460b09853) - Bug 1259248. Follow up to fix static analysis bustage (ab462300ff) - Bug 1259248. Add a comment about mfbt/Range.h (a78f7c2110) - Bug 1262681 - Draw target also has to be valid for us to demand a snapshot. r=bas (c4c0bfcaca) - Bug 1258313 - Allow snapping of 'pseudo' 3d transforms. r=jrmuizel (fc85ac9147) - Bug 1241060 - Skip non-2d sibling layers when calculating plugin window clipping under e10s. r=mstange (fc6836ab11) - Bug 1257288 - Have APZ hit testing respect scroll clips. r=kats (5f8db91909) - Bug 1255961 - Avoid zeroing out shmems (r=dvander) (cc0e856f83) - Bug 1251523 - Remove TextureFlags::DEALLOCATE_CLIENT from AndroidSurfaceTextureData r=nical (406a27e229) - Regenerate SyncObjects on device resets. (bug 1255711, r=bas) (8a83c23cdf) - Bug 1240659 - Add GonkNativeHandle::CreateDupNhObj() r=nical (3da777655e) - Bug 1238602 - Update ParamTraits<GonkNativeHandle>::Read() r=nical (969f8177fd) - Bug 1248923 - Store result in Update ParamTraits<GonkNativeHandle>::Read() r=nical (0052a996a0)
= Instructions for using the test plugin =
== MIME type ==
The test plugin registers itself for the MIME type "application/x-test".
== Event Model ==
* getEventModel()
Returns the NPAPI event model in use. On platforms without event models,
simply returns 0;
== Rendering ==
By default, the plugin fills its rectangle with gray, with a black border, and
renders the user-agent string (obtained from NPN_UserAgent) centered in black.
This rendering method is not supported for the async drawing models.
The test plugin supports the following parameters:
* drawmode="solid"
The plugin will draw a solid color instead of the default rendering described
above. The default solid color is completely transparent black (i.e., nothing).
This should be specified when using one of the async models.
* asyncmodel="bitmap"
The plugin will use the NPAPI Async Bitmap drawing model extension. On
unsupported platforms this will fallback to non-async rendering.
* asyncmodel="dxgi"
The plugin will use the NPAPI Async DXGI drawing model extension. Only
supported on Windows Vista or higher. On unsupported platforms this will
fallback to non-async rendering.
* color
This specifies the color to use for drawmode="solid". The value should be 8 hex
digits, 2 per channel in AARRGGBB format.
== Generic API Tests ==
* setUndefinedValueTest
Attempts to set the value of an undefined variable (0x0) via NPN_SetValue,
returns true if it succeeds and false if it doesn't. It should never succeed.
* .getReflector()
Hands back an object which reflects properties as values, e.g.
.getReflector().foo = 'foo'
.getReflector()['foo'] = 'foo'
.getReflector()[1] = 1
* .getNPNVdocumentOrigin()
Returns the origin string retrieved from the browser by a NPNVdocumentOrigin
variable request. Does not cache the value, gets it from the browser every time.
== NPN_ConvertPoint testing ==
* convertPointX(sourceSpace, sourceX, sourceY, destSpace)
* convertPointY(sourceSpace, sourceX, sourceY, destSpace)
The plugin uses NPN_ConvertPoint to convert sourceX and sourceY from the source
to dest space and returns the X or Y result based on the call.
== NPCocoaEventWindowFocusChanged ==
* getTopLevelWindowActivationState()
Returns the activation state for the top-level window as set by the last
NPCocoaEventWindowFocusChanged event. Returns true for active, false for
inactive, and throws an exception if the state is unknown (uninitialized).
* getTopLevelWindowActivationEventCount()
Returns the number of NPCocoaEventWindowFocusChanged events received by
the instance.
== Focus Tests ==
* getFocusState()
Returns the plugin's focus state. Returns true for focused, false for unfocused,
and throws an exception if the state is unknown (uninitialized). This does not
necessarily correspond to actual input focus - this corresponds to focus as
defined by the NPAPI event model in use.
* getFocusEventCount()
Returns the number of focus events received by the instance.
== NPRuntime testing ==
The test plugin object supports the following scriptable methods:
* identifierToStringTest(ident)
Converts a string, int32 or double parameter 'ident' to an NPIdentifier and
then to a string, which is returned.
* npnEvaluateTest(script)
Calls NPN_Evaluate on the 'script' argument, which is a string containing
some script to be executed. Returns the result of the evaluation.
* npnInvokeTest(method, expected, args...)
Causes the plugin to call the specified script method using NPN_Invoke,
passing it 1 or more arguments specified in args. The return value of this
call is compared against 'expected', and if they match, npnInvokeTest will
return true. Otherwise, it will return false.
* npnInvokeDefaultTest(object, argument)
Causes the plugin to call NPN_InvokeDefault on the specified object,
with the specified argument. Returns the result of the invocation.
* getError()
If an error has occurred during the last stream or npruntime function,
this will return a string error message, otherwise it returns "pass".
* throwExceptionNextInvoke()
Sets a flag which causes the next call to a scriptable method to throw
one or more exceptions. If no parameters are passed to the next
scriptable method call, it will cause a generic exception to be thrown.
Otherwise there will be one exception thrown per argument, with the argument
used as the exception message. Example:
plugin.throwExceptionNextInvoke();
plugin.npnInvokeTest("first exception message", "second exception message");
* () - default method
Returns a string consisting of the plugin name, concatenated with any
arguments passed to the method.
* .crash() - Crashes the plugin
* getObjectValue() - Returns a custom plugin-implemented scriptable object.
* checkObjectValue(obj) - Returns true if the object from setObjectValue() is
the same object passed into this function. It should return true when
the object is passed to the same plugin instance, and false when passed
to other plugin instances, see bug 532246 and
test_multipleinstanceobjects.html.
* callOnDestroy(fn) - Calls `fn` when the plugin instance is being destroyed
* getAuthInfo(protocol, host, port, scheme, realm) - a wrapper for
NPN_GetAuthenticationInfo(). Returns a string "username|password" for
the specified auth criteria, or throws an exception if no data is
available.
* timerTest(callback) - initiates tests of NPN_ScheduleTimer &
NPN_UnscheduleTimer. When finished, calls the script callback
with a boolean value, indicating whether the tests were successful.
* asyncCallbackTest(callback) - initiates tests of
NPN_PluginThreadAsyncCall. When finished, calls the script callback
with a boolean value, indicating whether the tests were successful.
* paintscript="..." content attribute
If the "paintscript" attribute is set on the plugin element during plugin
initialization, then every time the plugin paints it gets the contents of that
attribute and evaluates it as a script in the context of the plugin's DOM
window. This is useful for testing evil plugin code that might, for example,
modify the DOM during painting.
== Private browsing ==
The test plugin object supports the following scriptable methods:
* queryPrivateModeState
Returns the value of NPN_GetValue(NPNVprivateModeBool).
* lastReportedPrivateModeState
Returns the last value set by NPP_SetValue(NPNVprivateModeBool).
== Windowed/windowless mode ==
The test plugin is windowless by default.
The test plugin supports the following parameter:
* wmode="window"
The plugin will be given a native widget on platforms where we support this
(Windows and X).
The test plugin object supports the following scriptable method:
* hasWidget()
Returns true if the plugin has an associated widget. This will return true if
wmode="window" was specified and the platform supports windowed plugins.
== Plugin invalidation ==
* setColor(colorString)
Sets the color used for drawmode="solid" and invalidates the plugin area.
This calls NPN_Invalidate, even for windowed plugins, since that should work
for windowed plugins too (Silverlight depends on it).
* getPaintCount()
Returns the number of times this plugin instance has processed a paint request.
This can be used to detect whether painting has happened in a plugin's
window.
* getWidthAtLastPaint()
Returns the window width that was current when the plugin last painted.
* setInvalidateDuringPaint(value)
When value is true, every time the plugin paints, it will invalidate
itself *during the paint* using NPN_Invalidate.
* setSlowPaint(value)
When value is true, the instance will sleep briefly during paint.
== Plugin geometry ==
The test plugin supports the following scriptable methods:
* getEdge(edge)
Returns the integer screen pixel coordinate of an edge of the plugin's
area:
-- edge=0: returns left edge coordinate
-- edge=1: returns top edge coordinate
-- edge=2: returns right edge coordinate
-- edge=3: returns bottom edge coordinate
The coordinates are relative to the top-left corner of the top-level window
containing the plugin, including the window decorations. Therefore:
-- On Mac, they're relative to the top-left corner of the toplevel Cocoa
window.
-- On Windows, they're relative to the top-left corner of the toplevel HWND's
non-client area.
-- On GTK2, they're relative to the top-left corner of the toplevel window's
window manager frame.
This means they can be added to Gecko's window.screenX/screenY (if DPI is set
to 96) to get screen coordinates.
On the platforms that support window-mode plugins (Windows/GTK2), this only
works for window-mode plugins. It will throw an error for windowless plugins.
* getClipRegionRectCount()
Returns the number of rectangles in the plugin's clip region.
For plugins with widgets, the clip region is computed as the intersection of the
clip region for the widget (if the platform does not support clip regions
on native widgets, this would just be the widget's rectangle) with the
clip regions of all ancestor widgets which would clip this widget.
On the platforms that support window-mode plugins (Windows/GTK2), this only
works for window-mode plugins. It will throw an error for windowless plugins.
On Mac, all plugins have a clip region containing just a single clip
rectangle only. So if you request wmode="window" but the plugin reports
!hasWidget, you can assume that complex clip regions are not supported.
* getClipRegionRectEdge(i, edge)
Returns the integer screen pixel coordinate of an edge of a rectangle from the
plugin's clip region. If i is less than zero or greater than or equal to
getClipRegionRectCount(), this will throw an error. The coordinates are
the same as for getEdge. See getClipRegionRectCount() above for
notes on platform plugin limitations.
== Keyboard events ==
* getLastKeyText()
Returns the text which was inputted by last keyboard events. This is cleared at
every keydown event.
NOTE: Currently, this is implemented only on Windows.
== Mouse events ==
The test plugin supports the following scriptable methods:
* getLastMouseX()
Returns the X coordinate of the last mouse event (move, button up, or
button down), relative to the left edge of the plugin, or -1 if no mouse
event has been received.
* getLastMouseX()
Returns the Y coordinate of the last mouse event (move, button up, or
button down), relative to the top edge of the plugin, or -1 if no mouse
event has been received.
== Instance lifecycle ==
The test plugin supports the following scriptable methods:
* startWatchingInstanceCount()
Marks all currently running instances as "ignored". Throws an exception if
there is already a watch (startWatchingInstanceCount has already been
called on some instance without a corresponding stopWatchingInstanceCount).
* getInstanceCount()
Returns the count of currently running instances that are not ignored.
Throws an exception if there is no watch.
* stopWatchingInstanceCount()
Stops watching. Throws an exception if there is no watch.
== NPAPI Timers ==
* unscheduleAllTimers()
Instructs the plugin instance to cancel all timers created via
NPN_ScheduleTimer.
== Stream Functionality ==
The test plugin enables a variety of NPAPI streaming tests, which are
initiated by passing a variety of attributes to the <embed> element which
causes the plugin to be initialized. The plugin stream test code is
designed to receive a stream from the browser (by specifying a "src",
"geturl", or "geturlnotify" attribute), and then (if a "frame" attribute
is specified) send the data from that stream back to the browser in another
stream, whereupon it will be displayed in the specified frame. If some
error occurs during stream processing, an error message will appear in the
frame instead of the stream data. If no "frame" attribute is present, a
stream can still be received by the plugin, but the plugin will do nothing
with it.
The attributes which control stream tests are:
"streammode": one of "normal", "asfile", "asfileonly", "seek". Sets the
stream mode to the specified mode in any call to NPP_NewStream.
Defaults to "asfileonly".
"streamchunksize": the number of bytes the plugin reports it can accept
in calls to NPP_WriteReady. Defaults to 1,024.
"src": a url. If specified, the browser will call NPP_NewStream for
this url as soon as the plugin is initialized.
"geturl": a url. If specified, the plugin will request this url
from the browser when the plugin is initialized, via a call to
NPN_GetURL.
"geturlnotify": a url. If specified, the plugin will request this url
from the browser when the plugin is initialized, via a call to
NPN_GetURLNotify. The plugin passes some "notifyData" to
NPN_GetURLNotify, which it verifies is present in the call to
NPP_URLNotify. If the "notifyData" does not match, an error
will be displayed in the test frame (if any), instead of the stream
data.
"frame": the name of a frame in the same HTML document as the <embed>
element which instantiated the plugin. For any of the preceding three
attributes, a stream is received by the plugin via calls to NPP_NewStream,
NPP_WriteReady, NPP_Write, and NPP_DestroyStream. When NPP_DestroyStream
is called (or NPP_UrlNotify, in the case of "geturlnotify"), and a
"frame" attribute is present, the data from the stream is converted into a
data: url, and sent back to the browser in another stream via a call to
NPN_GetURL, whereupon it should be displayed in the specified frame.
"range": one or more byte ranges, in the format "offset,length;offset,length".
Only valid when "streammode" = "seek". When "range" is present, the plugin
will request the specified byte ranges from the stream via a call to
NPN_RequestRead, which it makes after the browser makes its final call to
NPP_Write. The plugin verifies that the browser makes additional calls
to NPP_Write according to the requested byte ranges, and that the data
received is correct. Any errors will appear in the test "frame", if
specified.
"posturl": a url. After the plugin receives a stream, and NPP_DestroyStream
is called, if "posturl" is specified, the plugin will post the contents
of the stream to the specified url via NPN_PostURL. See "postmode" for
additional details.
"postmode": either "frame" or "stream". If "frame", and a "frame" attribute
is present, the plugin will pass the frame name to calls to NPN_PostURL,
so that the HTTP response from that operation will be displayed in the
specified frame. If "stream", the HTTP response is delivered to the plugin
via calls to NPP_NewStream etc, and if a "frame" attribute is present, the
contents of that stream will be passed back to the browser and displayed
in the specified frame via NPN_GetURL.
"newstream": if "true", then any stream which is sent to a frame in the browser
is sent via calls to NPN_NewStream and NPN_Write. Doing so will cause
the browser to store the stream data in a file, and set the frame's
location to the corresponding file:// url.
"functiontofail": one of "npp_newstream", "npp_write", "npp_destroystream".
When specified, the given function will return an error code (-1 for
NPP_Write, or else the value of the "failurecode" attribute) the first time
it is called by the browser.
"failurecode": one of the NPError constants. Used to specify the error
that will be returned by the "functiontofail".
If the plugin is instantiated as a full-page plugin, the following defaults
are used:
streammode="seek" frame="testframe" range="100,100"
* streamTest(url, doPost, postData, writeCallback, notifyCallback, redirectCallback, allowRedirects)
This will test how NPN_GetURLNotify and NPN_PostURLNotify behave when they are
called with arbitrary (malformed) URLs. The function will return `true` if
NPN_[Get/Post]URLNotify succeeds, and `false` if it fails.
@url url to request
@param doPost whether to call NPN_PostURLNotify
@param postData null, or a string to send a postdata
@writeCallback will be called when data is received for the stream
@notifyCallback will be called when the urlnotify is received with the notify result
@redirectCallback will be called from urlredirectnotify if a redirect is attempted
@allowRedirects boolean value indicating whether or not to allow redirects
* setPluginWantsAllStreams(wantsAllStreams)
Set the value returned by the plugin for NPPVpluginWantsAllNetworkStreams.
== Internal consistency ==
* doInternalConsistencyCheck()
Does internal consistency checking, returning an empty string if everything is
OK, otherwise returning some kind of error string. On Windows, in windowed
mode, this checks that the position of the plugin's internal child
window has not been disturbed relative to the plugin window.
== Windows native widget message behaviour ==
* Mouse events are handled (saving the last mouse event coordinate) and not
passed to the overridden windowproc.
* WM_MOUSEWHEEL events are handled and not passed to the parent window or the
overridden windowproc.
* WM_MOUSEACTIVATE events are handled by calling SetFocus on the plugin's
widget, if the plugin is windowed. If it's not windowed they're passed to
the overriden windowproc (but hopefully never sent by the browser anyway).
== Getting and Setting Cookies ==
* setCookie(string)
Sets the given string as the cookie for window's URL.
* getCookie()
Returns the cookie string for the window's URL, the cookie set by setCookie.
== FPU Control ==
x86-only on some OSes:
* The .enableFPExceptions() method will enable floating-point exceptions,
as evil plugins or extensions might do.
== HiDPI Mode ==
* queryContentsScaleFactor()
Returns the contents scale factor. On platforms without support for this query
always returns 1.0 (a double value). Likewise on hardware without HiDPI mode
support.
== Plugin audio channel support ==
* startAudioPlayback()
Simulates the plugin starting to play back audio.
* stopAudioPlayback()
Simulates the plugin stopping to play back audio.
* audioMuted()
Returns the last value set by NPP_SetValue(NPNVmuteAudioBool).