Commit Graph

311224 Commits

Author SHA1 Message Date
Kirk Steuber
3a156f6686 Bug 1269185 - Prevent crashes in Windows when zip files cannot be read. r=spohl,a=ritu
MozReview-Commit-ID: 32uEegoKL4J
2016-05-04 12:57:21 -07:00
Chris Pearce
88c1f604e9 Bug 1268984 - Prefer to re-use a GMPParent with the requested nodeId rather than clone. r=jesup,a=ritu
If you request a GMPParent with a nodeId, you should get any already running
instances with the same nodeId in preference to cloning an existing GMP and
assigning it the nodeId.

This is ensures that EME GMP actors that are same-origin run in the same GMP
instance.

The GMP gtests are failing because of the cross-origin checks in
GeckoMediaPluginServiceParent::SelectPluginForAPI(). The loop there selects the
first GMPParent that can be used from the nodeId passed in. We previously
assumed a GMPParent can be used from a nodeId if the GMPParent has the same
nodeId, or if it has not loaded its process and it has no nodeId. The problem
with assuming that, is if an in-use GMPParent with the target nodeId lies in
the GeckoMediaPluginServiceParent::mPlugins list after a GMPParent with no
nodeId, we'll end up using the first GMPParent (the one with no nodeId) rather
than the one with the target nodeId.

The solution is to change GeckoMediaPluginServiceParent::SelectPluginForAPI()
so that effectively if we have a target nodeId, we'll select the first
GMPParent that has the same nodeId, or we'll clone the first which supported
all the requested capabilities/tags.

This means when you request a GMPParent with a given nodeId, you'll get the one
with the same nodeId (origin) by preference.

MozReview-Commit-ID: 4yVnrO8B1Pg
2016-05-05 22:35:44 +12:00
Chris Pearce
7a4ca55d3d Bug 1268984 - Store GMPStorage on GMPServiceParent so that it persists inside the same PB session. r=gerald,a=ritu
Prior to this change, we'd store the GMPStorage records for private browsing
sessions in the GMPStorageParent. The problem with this is that they only have
a lifespan matching their corresponding GMPParent. This means that if a GMP
stores something in a PB session, and the GMP is shutdown and then re-created,
we are likely to loose the stored data. This could mean that the PB session
gets results it doesn't expect, and thus expose a way for PB mode to be
detected.


MozReview-Commit-ID: 1OMD0LvidYs
2016-05-05 11:41:33 +12:00
Chris Pearce
ed8e6a58be Bug 1268984 - Ensure GMPs are re-inserted in GMPServiceParent::mPlugins in the same order in ReAddOnGMPThread. r=gerald,jesup,a=ritu
The GMP which GeckoMediaPluginServiceParent::FindPluginForAPIFrom() returns
depends on the order in which GMPs lie in GMPServiceParent::mPlugins. However
when we shutdown a GMPParent we remove and then re-append the GMPParent to
mPlugins. This means the order in which GMPs lie in the list changes.

So when WebRTC requests an H.264 decoder, the first time it will get OpenH264,
since that's first in the list. But once we dispose of that decoder, its
GMPParent will be cloned and the clone will be appended to the end of the
list. This means the next time WebRTC requests a decoder, it'll get whatever
was next in the list.

This could be the Adobe GMP, which seems to be able to handle whatever WebRTC
is putting into it. However, if you do this enough times, you'll get the
Widevine CDM, which can't handle whatever WebRTC is putting into it.

So a quick hack to fix this is in ReAddOnGMPThread is to re-insert the clone
of the GMP into the slot in mPlugins that the original occupied. Then WebRTC
will always get OpenH264 whenever it requests for an H.264 decoder, as the
order of the GMPParents in mPlugins won't change.




MozReview-Commit-ID: Ii4AMqDqAo9
2016-05-04 13:57:20 +12:00
Chris Pearce
4eab9fb575 Bug 1264497 - Call GMPSetNodeId in GMPLoader. r=gerald,a=ritu
MozReview-Commit-ID: I6BApLKpjPS
2016-05-06 14:49:12 +12:00
Gerald Squelart
0e348419fc Bug 1266336 - Clarify expected usage of CDM wrapper - r=cpearce,a=ritu
Assert that the CDM wrapper is given a non-null CDM pointer.
(so GetCDM() doesn't need to be null-checked.)
Renamed WidevineVideoDecoder mCDM to mCDMWrapper, to avoid (my) confusion.
Assert that WidevineVideoDecoder is given a non-null CDM-wrapper pointer.
Assert that WidevineVideoDecoder only accesses the CDM before DecodingComplete.

Small optimization: Move aCDM into mCDM (to save an AddRef/Release pair).

MozReview-Commit-ID: yKupY067ly
2016-05-06 12:10:59 +10:00
Gerald Squelart
9f1ce0169b Bug 1266336 - Check actual CDM creation - r=cpearce,a=ritu
Check the return result from Widevine's CDM creation function, and handle
failure.

MozReview-Commit-ID: HYvKgdK53aQ
2016-05-05 12:04:07 +10:00
Gerald Squelart
ce004ce548 Bug 1266336 - Check sCDMWrapper before creating video decoder - r=cpearce,a=ritu
Ensure that there is a CDM before creating a video decoder that relies on that
CDM. This is mainly to prevent using the Widevine video decoder alone, without
decryption.

MozReview-Commit-ID: 7p49CnmV2r7
2016-05-05 11:37:22 +10:00
Chris Pearce
cc337cb4f6 Bug 1266286 - Ensure crash reports work for GMP used by EME code. r=mconley,a=ritu
Crash reporting for GMPs being used from the EME call site are not generating
crash reports because they depend on the MediaKeys object calling
GMPService::AddPluginCrashHandler() to associate a window to which the
PluginCrashedEvent is fired. This doesn't work with e10s enabled because the
GMPParent which causes the plugin crash handlers to run is in the chrome
process, but the MediaKeys which adds the handler is in the child process. So
the crash handler is on the GMPServiceChild, but we only run the crash handlers
that were added to the GMPServiceParent in the chrome/parent process.

The solution is to broadcast a message from the chrome process to all the
content processes when a GMP has crashed that causes the GMPServiceChild to
also run its crash handlers.

MozReview-Commit-ID: 8Lek16G9ZGb
2016-05-04 20:32:00 -04:00
Nathan Froyd
a5fd2e6fde Bug 1264187 - check for a ProtoAndIfaceCache before blindly destroying it; r=bz, a=ritu
We normally create global objects in the DOM bindings via:

  1. Call JS_NewGlobalObject.
  2. Set a private slot to hold a ProtoAndIfaceCache.
  3. Other steps that aren't relevant here.

However, it's possible for step 1 to construct a global inside the JS
engine and then fail to initialize it in some way.  When that happens,
the newly-created object will be subjected to GC and any GC-related
hooks that were passed in to JS_NewGlobalObject.  Which implies that our
tracing and finalization hooks must be prepared to handle an object
that's not fully initialized--i.e. doesn't have a ProtoAndIfaceCache
object allocated for it.  We handled such a case in our trace hook, but
we failed to add the same check for our finalization hook.  Do so.
2016-04-14 11:42:34 -04:00
ffxbld
645b329ed4 No bug, Automated blocklist update from host bld-linux64-spot-1053 - a=blocklist-update 2016-05-07 03:16:12 -07:00
Jan Henning
275cf64dfa Bug 1229259 - Always initialise new tabs with basic session store data. r=margaret a=ritu
When opening a new tab, there is a small window between tab creation and the DOMTitleChanged event firing where the tab - if it is not created as a delay loaded zombie tab right away - won't have any session store data. However a number of functions (tab zombification and restoring of zombified tabs, undo close tabs) depend on the session store data always being available, so things can fall apart if e.g. a zombification is triggered immediately after opening a new tab.
This also means that a tab which is zombfied immediately after its creation (e.g. when a number of tabs are opened through tab queues on startup) is not included in a session save and will therefore get lost if Firefox is killed.

Therefore, we now always intialise new tabs with some basic session store data.

MozReview-Commit-ID: 9248jJFUaq5
2016-04-07 22:02:05 +02:00
Eric Rahm
2c1a965bcf Bug 1181142 - Make the minimum allocation size word sized on all platforms. r=glandium, r=erahm a=ritu
Bug 691003 made the minimum allocation size word sized for Linux and OS X, we
now need to do a similar change on Windows as well. For Windows the requirement
is 8-bytes on 32-bit and 16-bytes on 64-bit.
2016-03-29 16:31:21 +11:00
Morris Tseng
bac4521a1c Bug 1254400 - Handle device reset for d3d9. r=dvander a=ritu 2016-05-06 16:20:29 -07:00
Mark Capella
73d8e7a5a3 Bug 1252465 - Link taps don't work at the bottom of reader view page, r=margaret a=ritu 2016-03-22 10:50:04 -04:00
Andrzej Hunt
80f16b2a9b Bug 1269481 - Update suggestClient if suggestTemplate changes r=mkaply a=ritu
MozReview-Commit-ID: LmsgSFda6Nv
2016-05-04 11:25:59 -07:00
Andrew McCreight
984154ed5a Bug 1268938 - Use the name of the original message in Send for reply telemetry. r=billm a=ritu
aReply usually won't have a name properly set, but aMsg does. To avoid
accessing aMsg after it dies, copy the pointer to the name.
2016-05-02 20:37:40 -07:00
Andrew Comminos
dea21fb1d3 Bug 1258086 - Clear unbuffered SHM images with a 32-bit visual before drawing with the basic layer manager. r=lsalzman a=ritu
MozReview-Commit-ID: 8XgVwvBDZ3X
2016-04-27 13:46:07 -07:00
ffxbld
bf7e5690fb No bug - Tagging 609000bcc11211d7c27ceea36fa2d2262fa0523f with FIREFOX_47_0b3_BUILD1, FIREFOX_47_0b3_RELEASE a=release CLOSED TREE 2016-05-06 08:16:52 -07:00
ffxbld
ba7dc5fd4a Automatic version bump. CLOSED TREE NO BUG a=release 2016-05-06 08:16:49 -07:00
Rail Aliiev
6aa92fb66a Bug 1265425 - Fix buildbot properties r=coop a=release DONTBUILD
MozReview-Commit-ID: DBWsXeSuobI
2016-05-06 07:01:30 -04:00
Bas Schouten
6b602a1390 Bug 1256728: Don't force presentation during resize. r=jrmuizel a=ritu 2016-04-18 13:23:15 +00:00
Carsten "Tomcat" Book
19abdd30a0 Backed out changeset 4b359b915f9e (bug 1256728) for bustage 2016-05-06 15:33:08 +02:00
Bas Schouten
525c4f40bc Bug 1256728: Don't force presentation during resize. r=jrmuizel a=ritu 2016-04-18 13:23:15 +00:00
Wes Kocher
cc99c34abe Bug 1269961 followup because I didn't resolve the merge conflict completely a=me 2016-05-05 12:51:46 -07:00
Bill McCloskey
07060a7b04 Bug 1269961 - Collect more telemetry on content process crashes (r=jimm,mconley) a=ritu 2016-05-03 20:08:41 -07:00
Bill McCloskey
3e7296d5ac Bug 1269961 - Remove listeners from RemotePageManager before invoking Unload (r=mconley) a=ritu 2016-05-03 20:08:33 -07:00
Jeff Gilbert
7c61cb3c54 Bug 1260944 - Fix ANGLE D3D WARP for WebGL. - r=jrmuizel a=ritu 2016-04-06 13:47:25 -07:00
Chenxia Liu
062e899f3c Bug 1263941 - History is not displayed in the 3-dot menu if History panel is set as default after it was hidden. r=sebastian a=ritu
MozReview-Commit-ID: 1hSKJd0r0fv
2016-04-20 11:03:35 -07:00
Margaret Leibovic
d913b4153e Bug 1248399 - Update browser.snippets.geoURL and handling code to use MLS instead of geodude. r=giorgos,grisha a=ritu
MozReview-Commit-ID: wm4ZYbRCcq
2016-03-22 15:50:43 -04:00
Michael Comella
f6d7d53b5a Bug 1245493 - Don't animate when showing toolbar when FF is first unhidden. r=margaret, a=ritu
After this patch, I still occasionally see the toolbar positioned part
way down from the top of the screen. However, this state looks slightly
less janky without the animation I removed and I can't consistently
reproduce it anymore.  Given the DynamicToolbar.setVisible calls I make,
I'd guess this is likely to be a bug caused by BrowserApp.onTabChanged
(and thus DynamicToolbar.setVisible) not getting called instantly and
so the DynamicToolbar is initialized to a different location on screen.
I'd guess it's a bug in DynamicToolbar as to why it's positioned partially
off-screen.

There is a little bit of code duplication, but that is because the code
to load a url on a new intent is duplicated (i.e. once from GeckoApp.initialize
- the initial load - and once from GeckoApp.onNewIntent). This could
potentially be cleaned up if we moved the app loading code into onResume,
but that may not be possible since we need to wait for Gecko to start
up.

Additionally, this patch adds a lot of hard-to-follow global state, which is
also not good.

Preferred solution (bug 1269041): show the toolbar each time onStart is
called (i.e.  FF is unhidden).  This is good for the user - they'll be
more aware which page they're on - but it's janky with the current
implementation, where the page content does not scroll when the toolbar
is shown so previously visible content is hidden. Thus, I went with the
other approach.  fwiw, Chrome does this behavior, but scrolls the toolbar
offscreen shortly after it is shown.

This solution is blocked on bug 1245523.

MozReview-Commit-ID: 7JjCrIf4KTm
2016-03-28 18:50:52 -07:00
Randell Jesup
897c42b277 Bug 1267600 - Ask the main thread to shut down the SystemClockDriver if needed. r=jesup a=ritu
MozReview-Commit-ID: 3v74w9UN4o3
2016-04-26 15:33:14 -04:00
Wei-Cheng Pan
7686ab3780 Bug 1259641 - Do not force reflow for all tabs when size mode changed. r=smaug a=ritu
MozReview-Commit-ID: GoTCM60Hmlf
2016-04-20 11:41:42 +08:00
Ralph Giles
c04ab277a5 Bug 1262659 - Report HTTP Live Streaming playback requests. r=cpearce,bsmedberg a=ritu
Identify HLS media types (and related m3u playlists) and report
telemetry about how often we fail to play them. This is designed
to measure popularity to inform decisions about support for this
format.

MozReview-Commit-ID: Fp8lNMOJKyA
2016-04-11 14:13:43 -07:00
Nicholas Nethercote
3e359c4920 Bug 1265035 - Make ~WorkerJSRuntime() handle Initialize() failure better. r=khuey. a=ritu 2016-04-19 14:04:32 +10:00
Jan Beich
192eb8fbcb Bug 1239550 - Apply bug 1228230 against media/ffvpx. r=glandium,jya a=ritu
MozReview-Commit-ID: EGLaoJnSaWY
2016-04-09 10:48:50 +00:00
Daniel Holbert
624f098542 Bug 1269174: Fix nsSVGViewBox::HasRect() to return false instead of using stale mBaseVal. r=longsonr a=ritu
MozReview-Commit-ID: esNxaomT3D
2016-05-03 07:40:26 -07:00
Dragana Damjanovic
9a04d588c0 Bug 1269055 - If a connection is reused, retry requests even if the request method is not safe (revert to old(ff45) behavior).r=mcmanus a=lizzard
MozReview-Commit-ID: INw61hHzvDl
2016-05-03 17:39:30 -07:00
Benjamin Smedberg
bb062529d8 Bug 1268548 - Add telemetry for when the addon manager upgrade dialog is shown, r=rhelmer a=ritu
MozReview-Commit-ID: 7dxkY9lIMWc
2016-04-28 13:07:42 -04:00
Jean-Yves Avenard
172106569a Bug 1266129 - Upgrade ffvpx to 3.0.2. . r=ajones a=ritu 2016-04-28 21:31:18 +10:00
Gerald Squelart
f69b35facc Bug 1268379 - Delay WMF checks in GMPParent - r=jesup a=ritu
The WMF HasAAC/HasH264 checks were done off the main thread, as soon as the
plugin was loaded, which was way too soon in the overall startup process, when
the WMF subsystem may not have been properly initialized yet, or may be in the
middle of it.

The solution here is to delay these checks until they are actually needed to
respond to a format-support request, as they come later in the process.

Note: This may not be the ideal solution yet, as we are still relying on some
magic sequencing of events. Other avenues have been explored unsuccessfully
yet, but we may want to revisit this issue after this urgent patch has landed.

MozReview-Commit-ID: JVgINc5FLFx
2016-05-02 15:03:11 +10:00
Andrew McCreight
4780f7ed50 Bug 1268130, part 2 - Make ByteLengthIsValid failures fatal in release builds. r=froydnj a=ritu
This will stop us from sending truncated messages, which will make the
receiver crash.
2016-04-28 10:00:46 -07:00
Andrew McCreight
dd5574634a Bug 1268130, part 1 - Reimplement ByteLengthIsValid using CheckedInt. r=froydnj a=ritu
The first check in ByteLengthIsValid() says "nsTArray only handles
sizes up to INT32_MAX", but the actual requirement is that the
capacity is no larger than UINT32_MAX. The check is overly restrictive
if sizeof(E) is 1 byte, and overly permissive if sizeof(E) is greater
than 2 bytes. I removed this check. Internal nsTArray invariants
should be enforced by nsTArray methods.

The second check is trying to check for overflow, but that should just
be done using CheckedInt.
2016-04-28 10:00:46 -07:00
Neil Deakin
39db25f728 Bug 1256952, revert this bug a=ritu 2016-05-05 10:41:39 -07:00
Haik Aftandilian
2f67acefba Bug 1267453 - Amazon Widevine rejects HDCP on MacBook Pro with or without an external display. r=gcp a=ritu 2016-05-02 19:33:08 +02:00
Mihai Tabara
b73538be4d Bug 1214487 - Implement uptake monitoring on slaves/workers r=rail a=release DONTBUILD
MozReview-Commit-ID: CWl24yIKPc
2016-05-05 13:11:06 -04:00
Tobias Schneider
bb0792b483 Bug 1266889 - Plugin block list blocks SWF network requests, but does not prevent plugin instantiation. r=francois a=ritu 2016-04-22 16:00:43 -07:00
Ben Kelly
8c2de743ac Bug 1265771 P3 Expand browser_force_refresh.js to verify Clients.matchAll() behavior on refresh. r=bz a=ritu 2016-05-04 14:18:40 -07:00
Ben Kelly
4b2da1679f Bug 1265771 P2 Expand navigate-window.https.html wpt test to cover uncontrolled windows. r=bz a=ritu 2016-05-04 14:18:40 -07:00
Ben Kelly
01037cb33e Bug 1265771 P1 Only store active documents in the global observer list. r=bz a=ritu 2016-05-04 14:18:40 -07:00