Commit Graph

496663 Commits

Author SHA1 Message Date
Rob Wu
c3c9744957 Bug 1287007 - Fix timing issue in test_delay_update_webextension.js r=rhelmer
The onUpdateAvailable listener is asynchronously notified, so the caller
(i.e. the test) cannot assume that a message sent immediately after
triggering an update would trigger the `browser.test.onMessage` listener
that was added in the onUpdateAvailable event handler.

MozReview-Commit-ID: 12n64f5l3RA

--HG--
extra : rebase_source : 6ba7923359786c4ccd7f4d29664a8567e253e0cd
2016-09-24 14:54:53 +02:00
Rob Wu
3992652f2f Bug 1287007 - Make browser_ext_tabs_executeScript.js reliable r=billm
The ProxyMessenger registers a listener whenever the first addon
starts. Although the map does not have any listeners any more at
the end of the test, the listener itself is not removed because
the message-manager-close notification is not sent for them.

So do not count these persistent message managers in the test.
The actual message managers of interest are those associated with
the (closed) tab.

Note: When the test is run in isolation, it may still fail due
to bugzil.la/1293583. See bug for work-around if you want to test.

MozReview-Commit-ID: IiDHhmvQPcv

--HG--
extra : rebase_source : 3a9332d69be31e34bc704de217c823e2a02dd514
2016-09-15 15:53:03 -07:00
Rob Wu
70ca4c8753 Bug 1287007 - Make window.close in extension pages async r=billm
Test coverage by tabs.onRemoved + window.close() in:
toolkit/components/extensions/test/mochitest/test_ext_tab_teardown.html

MozReview-Commit-ID: 7asg2XGrTaQ

--HG--
extra : rebase_source : 4498725a207e1863bb5a1f0ee58673e6976df1f8
2016-09-13 20:26:18 -07:00
Rob Wu
67b8230b49 Bug 1287007 - Remove .contentWindow from ProxyContext r=billm
MozReview-Commit-ID: ASNigrM07yz

--HG--
extra : rebase_source : e9169090ec8cb1d9822f235faa15516403576dde
2016-09-13 16:02:03 -07:00
Rob Wu
f81e1a59a2 Bug 1287007 - Fix test_ext_management_uninstall_self.js r=bsilverberg
The test logic was broken by design: Two tests uninstall the addon,
but only one uninstall observer was used. Consequently, the second
test resumes the test before the addon was actually uninstalled.

It is probably sheer luck that the test worked before.

MozReview-Commit-ID: DcT48ZQ2bRp

--HG--
extra : rebase_source : 6ab304eab2c306106b5383726fbdf73775c5060a
2016-09-13 13:59:37 -07:00
Rob Wu
ec11370338 Bug 1287007 - Enable proxying of most APIs. r=billm
MozReview-Commit-ID: KrI42XrsVVG

--HG--
extra : rebase_source : 87958230f68c6866b4d62eff1f325f968ec09252
2016-09-12 21:19:53 -07:00
Rob Wu
1c0083af9d Bug 1287007 - Fix timing issue in test_ext_storage.js r=billm
MozReview-Commit-ID: 63Ra7ThuHuf

--HG--
extra : rebase_source : 386c565811fc07934653540905935607f58d7b4d
2016-09-13 00:45:00 -07:00
Rob Wu
0c66504d77 Bug 1287007 - Fix "onclick" in contextMenus, to child. r=billm
Main thing: Making contextMenus implementation webext-oop compatible.

Preparation:

- Add getParentEvent to ChildAPIManager to allow use of remote events.
- Introduce `addon_parent_only` to "allowedContexts" to only generate a
  schema API in the main process.
- Do not fill in `null` for missing keys if the schema declares a key as
  `"optional": "omit-key-if-missing"`. This is needed for the second
  point in the next list.

Drive-by fixes:

- Ensure that the "onclick" handler is erased when a context closes.
- Do not clear the "onclick" handler in `contextMenus.update` if the
  onclick key has been omitted (parity with Chrome).
- Remove some unnecessary `Promise.resolve()`
- Add extensive set of tests that check the behavior of the contextMenus
  APIs with regards to the onclick attribute in various scenarios.

MozReview-Commit-ID: A5f3AUQzU8T

--HG--
extra : rebase_source : 0464a1aa2387343a6f1d0fcd8fbabfdd1a68b1bb
2016-09-12 18:26:03 -07:00
Rob Wu
fcb710d311 Bug 1287007 - Move part of browserAction and pageAction to child r=billm
And remove redundant `Promise.resolve()` because it is the default
for async functions.

setIcon is not supported on Android, so there was no need to change
mobile/android/components/extensions/ext-pageAction.js.

MozReview-Commit-ID: 94ebaJFxLAi

--HG--
extra : rebase_source : 20466181501b264ba33fc8ab61fdf2bed20f9eef
2016-09-11 04:18:35 -07:00
Rob Wu
095763db5a Bug 1287007 - Set parent cloneScope to child cloneScope r=billm
This is only to help with migration. This change allows all APIs to
behave identical regardless of whether the API is proxied.

Change cloneScope to be a getter because cloneScope is
`this.contentWindow`, which may be nulled when the context navigates away
(but stays in the bfcache).

Any API that is not proxied must have an identical clone scope to make
sure that properties such as toJSON (in the native messaging
stringifier) and ArrayBuffer (in webRequest as requestBody) are visible
to the caller.

MozReview-Commit-ID: 9aT3SUBieHK

--HG--
extra : rebase_source : f5e4eef52100e42b6fcdc3a43fa7676e7fc3dabc
2016-09-11 03:10:21 -07:00
Rob Wu
03c9fa02f3 Bug 1287007 - Track message manager / browser swaps r=billm
Neither the message manager nor the XUL browser is guaranteed to be
constant during a ProxyContext's lifetime.

Add a new class to follow the `<browser>` belonging to the current
docshell and update the ProxyContext properties as needed.
NOTE: The `BrowserDocshellFollower` class assumes that docshells are
swapped using `newBrowser.swapDocShells(oldBrowser)`. If this
assumption turns out to be false, then the tracker will lose track of
the `<browser>`. See bugzil.la/1301837 for more details.

Also, renamed `messageManager` to `currentMessageManager` because the
`messageManager` property is overwritten by the `setContentWindow` hack
in WannabeChildAPIManager in ExtensionChild.jsm.

browser/components/extensions/test/browser/browser_ext_currentWindow.js
provides test coverage for this feature once the `test` API goes through
a ChildAPIManager instead of directly through a WannabeChildAPIManager.
Why? Because that test calls `test.onMessage.addListener` in the script
that is loaded in a popup page. Popups are loaded in two stages: First
the content is preloaded in a `<browser>`, and then when the popup is
shown a new `<browser>` is created and the docshells are swapped.
When the script runs while the popup script is being preloaded, the
`ParentAPIManager` receives the IPC message with the target set to the
`<browser>` used for preloading. When the API response is ready,
`target.messageManager.sendAsyncMessage` is called. Meanwhile the
docshells have been swapped, the message manager is gone and this fails.
With this patch, the message manager is correctly tracked and this test
passes.

MozReview-Commit-ID: C5Z0ZJRXKyw

--HG--
extra : rebase_source : 63e6c408d0e7f58dca81810771810cf6fe7b5d5b
2016-09-09 23:04:04 -07:00
Rob Wu
6db061b492 Bug 1287007 - Use frame script to initialize background/popup page r=billm
MozReview-Commit-ID: 8Di1nTnwpbU

--HG--
extra : rebase_source : 453a97709cce2a038839a909e2d61ce9d1a3a84c
2016-09-08 20:41:43 -07:00
Rob Wu
bd0fa6844a Bug 1287007 - Only close extension tabs upon shutdown r=billm
In one of the previous patches, the viewType of popup changed from
"popup" to "tab". As a result it was closed by the `page-shutdown`
event handler in ext-tabs.js. This prevents that from happening.

Also added a test that checks whether the options page type is a tab, to
prevent future regressions.

MozReview-Commit-ID: 3Qcf08PgNqb

--HG--
extra : rebase_source : c4b89d122df52a7280ff5818903cb1d8737fb31c
2016-09-08 19:02:56 -07:00
Rob Wu
24d04d4b4a Bug 1287007 - Set the principal in ChildAPIManager r=billm
The `browser.downloads.download` API takes a "url" parameter. The schema
file at downloads.json defines the type to be "url". This means that the
parameter is checked with `context.checkLoadURL(url)` in Schemas.jsm.
This method uses the principal of the object that was passed to
`Schemas.inject`.

Currently, this works just fine because the `schemaWrapper` in
Extension.jsm returns the context's principal.
But when we move to using the ChildAPIManager, the principal is not
defined and Schemas.jsm will fall back to a Null principal.

As a result, the test_ext_downloads_download.js fails because the
blob:-URL with the extension origin cannot be loaded by a null
principal. To fix this, the context's principal must be set.

MozReview-Commit-ID: FmpqYfPemyY

--HG--
extra : rebase_source : c8f96765cc05fc4a3631120ae4546d6a8512c840
2016-09-07 20:35:39 -07:00
Rob Wu
2b7962648c Bug 1287007 - Remove dead code r=billm
MozReview-Commit-ID: LtuKY5DjB68

--HG--
extra : rebase_source : d79d45cef78822977766f67f2172239d523a7182
2016-09-06 15:50:50 -07:00
Rob Wu
0baf41ff20 Bug 1287007 - Use child's Extension instead of the process' r=billm
MozReview-Commit-ID: 9o8tOuUbchn

--HG--
extra : rebase_source : 8caefb779ea9faef3861aa79a147caace91fe44b
2016-09-06 15:31:33 -07:00
Rob Wu
e15366d54e Bug 1287007 - Fix test_ext_api_permissions.js r=billm
"extension.views" will only be available in content, so
use the "proxy-context-load" event to detect new views.

MozReview-Commit-ID: K86Be5IDk42

--HG--
extra : rebase_source : 97c839efacbb9981399462d712766b5410567bae
2016-09-07 17:10:33 -07:00
Rob Wu
dce0635037 Bug 1287007 - Use IPC to share viewType, tabId and windowId r=billm
Accessing <browser> in ContentChild does not work when extensions run in
a separate process.

MozReview-Commit-ID: EK0aOYeGaZ5

--HG--
extra : rebase_source : 359cb1f9022b8097d27aa74a30e133c4a7e7c742
2016-09-06 15:25:10 -07:00
Rob Wu
9db4f57609 Bug 1287007 - Fix timing issue in browser_ext_tabs_getCurrent.js r=billm
browser.test.sendMessage does not have enough time to finish
before tabs.remove since test moved to ChildAPIManager for
extension pages, causing the test to time out.

MozReview-Commit-ID: 1mmGZOi9fzm

--HG--
extra : rebase_source : b0d1310f867040f1f7d14b94a95ba364e3902f88
2016-09-06 14:45:58 -07:00
Rob Wu
ff65d297cc Bug 1287007 - Move extension context initialization to ExtensionContent r=billm
This is a simple move of ExtensionContext creation logic to
ExtensionChild.

Before the change, ExtensionContext was initialized as follows:

1. (ext-backgroundPage.js) Create background page
2. (Extension.jsm) document-element-inserted observed.
3. (Extension.jsm) new ExtensionContext + unload observer.

After this commit:

1. (ext-backgroundPage.js) Create background page
2. (ext-backgroundPage.js) emit extension-browser-inserted event
3. (Extension.jsm) Pass global to ExtensionContent + unload listener.
4. (ExtensionContent.jsm) document-element-inserted observed.
5. (ExtensionChild.jsm) new ExtensionContext

The next step is to use frame scripts and synchronize state.

MozReview-Commit-ID: K6mPdq7KQ2T

--HG--
extra : rebase_source : c742dfe89646d6717da134c7408aa5a066107c66
2016-09-05 23:50:11 -07:00
Rob Wu
01ddf6d0af Bug 1287007 - Move extension.getViews to child r=billm
MozReview-Commit-ID: SG2pmulzaP

--HG--
extra : rebase_source : 7c2e65794c3d242f8b03e8773f58b84b160085cf
2016-09-07 22:54:07 -07:00
Rob Wu
c68c40357a Bug 1287007 - Move background page API logic to child r=billm
MozReview-Commit-ID: iGROahhkhn

--HG--
extra : rebase_source : c05e46aab941feb017eae8b92d02e7b38ac5f347
2016-09-05 22:34:44 -07:00
Rob Wu
6023c940a4 Bug 1287007 - Rename "context.type" to "context.viewType" r=billm
"viewType" is more easily searchable and not as ambiguous as "type".

MozReview-Commit-ID: 8sG4qagFCBu

--HG--
extra : rebase_source : 39d76379996e631b9fc33f0c77d565cf302b9df9
2016-09-05 22:26:56 -07:00
Rob Wu
dedac1507f Bug 1287007 - Introduce ChildAPIManager to addon code r=billm
This is the bare minimum to separate the generation of addon_parent and
addon_child APIs. Now it is possible to have methods with the same name
but different implementations in the parent and child.

Many APIs are not compatible with the proxied API implementation, so
they temporarily fall back to directly invoking the parent API, just as
before this commit.

MozReview-Commit-ID: fwuZUvD8tY

--HG--
extra : rebase_source : 5360af53ff628602014ca8bcff74828ce3cda742
2016-09-05 18:57:38 -07:00
Rob Wu
bcd1d0ccd2 Bug 1287007 - Do not neuter error messages from the same principal r=billm
With an upcoming change that introduces another ProxyContext,
errors from a different scope may bubble up. These messages should
be reported, not replaced with "An unexpected error occurred".

MozReview-Commit-ID: ByUktVkhDyx

--HG--
extra : rebase_source : 30c6d8629c705b3cb1b3a186550720137d641e20
2016-09-05 17:04:28 -07:00
Rob Wu
78dc0225aa Bug 1287007 - Move ExtensionContext to separate file r=billm
This is just a mechanical change, literally nothing more than cutting
ExtensionContext from Extension.jsm, pasting it in ExtensionChild.jsm
and adding the minimal imoort boilerplate.

MozReview-Commit-ID: 5uVt1IOdEFU

--HG--
extra : rebase_source : 7ab912ded4dee4e5104deebe3d5268017b63eb9b
2016-09-05 00:15:18 -07:00
Rob Wu
9f636c39af Bug 1287007 - Fix cross-process browser.storage.local serialization r=billm
- Lazily initialize file IO-specific stuff in ExtensionStorage.jsm,
  and limit this work to the main process.

- Add local versions of the `storage.local.get` and `storage.local.set`
  implementations that perform sanitization (without the change, values
  are improperly serialized over IPC).

- Copied the `backgroundScript` test from xpcshell/test_ext_storage.js
  to mochitest/test_ext_storage_content.html because they should behave
  identical. Before this patch the test failed due to IPC serialization
  issues, now the test passes.
  Note that the old test also passes with the changes.

MozReview-Commit-ID: 8J8CCdwMACN

--HG--
extra : rebase_source : 7b8a490b79c09f69a10d4dc13ad23f8382b641d1
2016-09-04 19:19:17 -07:00
Rob Wu
92af808fd6 Bug 1287007 - Derive context.principal from sandbox r=billm,kmag
`context.principal` should be equal to the principal of the sandbox, so
that if a new sandbox is created using `Cu.Sandbox(principal)`, that
objects can be shared between the new sandbox and `context.cloneScope`
(= `context.sandbox`) without issues.

Without this change, using `context.jsonStringify` on an object from a
content script would trigger the following error:

> Error: Permission denied to access property "toJSON"

This scenario is covered by the test
toolkit/components/extensions/test/mochitest/test_ext_storage_content.html
in the next commit.

MozReview-Commit-ID: E4Jt8TDwNAZ

--HG--
extra : rebase_source : ada568f456efc31d6bcd0fa0b07ffe0358f30c1c
2016-09-30 19:16:34 +02:00
Rob Wu
8ccd32af9a Bug 1287007 - Allow local implementations to call remote implementations r=billm
- Add callParentFunctionNoReturn / callParentAsyncFunction to
  ChildAPIManager to implement remote calls.

- Add in-process browser.test implementation that uses this.

- Add tests to verify that the browser.test.assert* methods with
  the `allowAmbiguousOptionalArguments` schema attribute are working
  with objects that cannot be passed as-is over IPC.
  (except test.sendMessage, because stringifying the arguments has an
   observable impact on test behavior)

MozReview-Commit-ID: 6cFVgmFfU93

--HG--
extra : rebase_source : 8e1046d5c7b2ec18e6130ae92fe539f3c0e02706
2016-09-04 02:29:48 -07:00
Rob Wu
4ec02709a6 Bug 1287007 - Mark all browserAction methods as async r=billm
E.g. browser.browserAction.enable(...).then(...) now works as expected.
Removed a Promise.resolve() because that is the default.

MozReview-Commit-ID: 4Shxtn0rjYH

--HG--
extra : rebase_source : 2f2516686c7d79094fac5ff1176c1c9310f1abe5
2016-09-02 14:22:09 -07:00
Rob Wu
8a87af36f9 Bug 1287007 - Require "async" in schemas to match name r=billm
In the pageAction and browserAction schemas, several methods are
declared with `"async": true` but without a specified callback in the
`"parameters"` object, so callbacks are not allowed. However, when a
callback is proxied, the `ParentAPIManager` will mirror the call by
passing in an extra callback to the proxied API - and break.

This patch fixes the issue by removing uses of async:true.  Also for
consistency between the browserAction and pageAction methods, the
methods that were not declared as async have also been marked as async.

MozReview-Commit-ID: JQqzmTUAotB

--HG--
extra : rebase_source : 62d1cbc4843dd6c792318337158e4311f8df94a4
2016-09-02 03:37:55 -07:00
Rob Wu
ef043e450c Bug 1287007 - Fix timing issue in browser/page action tests r=billm
MozReview-Commit-ID: 9L0ttaq42Ga

--HG--
extra : rebase_source : 0120e0bf68a5d60096454c6dd42b2496a73be3a5
2016-09-02 16:33:32 -07:00
Rob Wu
e2e6ffa6f0 Bug 1287007 - Refactor test_ext_schemas_api_injection.js r=billm
When the background API move to a separate implementation,
then the schema APIs will be generated (and ChildAPIManager
will just delegate the implementation to the parent process).

The purpose of the test is to verify that nested namespaces and
null-feturn values work, so just use the base classes instead of a
concrete implementation for BaseContext / SchemaAPIManager instead of
setting up a full extension.

MozReview-Commit-ID: CB5s7Ae24zS

--HG--
extra : rebase_source : c9f50d84151b18323097e1a00d2eb3839a22f64d
2016-09-02 05:36:33 -07:00
Rob Wu
9b86e99594 Bug 1287007 - Improve errors for non-existing remote APIs r=billm
Currently, if the remote implementation is missing, the next unhelpful
error message is logged to the console:
"TypeError: findPathInObject(...) is not a function" or
"TypeError: findPathInObject(...) is undefined", etc.

This commit makes the message more useful:
"WebExtension API tabs.create not found (it may be unimplemented by Firefox)"

MozReview-Commit-ID: FhPEYKSjnLm

--HG--
extra : rebase_source : 29725b686428c7c052838681f396ff877d19bb18
2016-09-01 21:14:31 -07:00
Rob Wu
af60812f40 Bug 1287007 - Fix some flaws in ProxyAPIImplementation r=billm
- removeListener: There is no set.remove, use set.delete.
- Async callbacks: Do not unconditionally turn the result in a
  SpreadArgs because it causes the result to unconditionally
  be wrapped in an array (+test).

MozReview-Commit-ID: LqwtBsHWJJr

--HG--
extra : rebase_source : 1c569ab4733c8111960613fc210357960ae09e88
2016-09-01 21:10:18 -07:00
Mark Banner
d5de303ea5 Follow up to bug 1311614 - Fix missing newline at end of custom-request-view.js to fix eslint. rs=bustage-fix. r=standard8
MozReview-Commit-ID: EVxQbjrmLdl

--HG--
extra : rebase_source : cec3afae24f944c7c561a1975592ca5f89602a67
2016-10-24 10:18:29 +01:00
Alexandre Poirot
a1c295cf6b Bug 1249119 - Prevent exception when opening inspector on a loading document. r=pbro
MozReview-Commit-ID: 9TNRUblT0SW

--HG--
extra : rebase_source : c8c30017cf5cb5be947a5edd5ff48908e0bf2db4
2016-10-19 05:26:40 -07:00
Alexandre Poirot
c50962f647 Bug 1249119 - Let shared-head helper cleanup tests instead of duplicating the effort in inspector head. r=pbro
MozReview-Commit-ID: 2GxvXl3GTy8

--HG--
extra : rebase_source : 6291d073d214f4b56889ad2296bc9a20218b860c
2016-10-19 05:26:08 -07:00
Alexandre Poirot
172379f71f Bug 1249119 - Fix inspector startup when opening it on a loading document r=jdescottes
MozReview-Commit-ID: 5d4K6VFLTgE

--HG--
extra : rebase_source : b52bf750668c162a9dc5d05314e87f4d252726e7
2016-10-19 05:25:26 -07:00
Alexandre Poirot
7603d7f12e Bug 1249119 - Prevent trying to initialize highlighter on still-loading documents. r=pbro
MozReview-Commit-ID: 3S0LoB40q2W

--HG--
extra : rebase_source : 36547954c9150d70eab860b8da1ca0e12cefa4f3
2016-10-19 05:19:48 -07:00
Ting-Yu Chou
8b0030d0e6 Bug 1312326 - Use StringFromIPCMessageType() instead for better crash annotation. r=kanru
MozReview-Commit-ID: 1kElBr0X6W

--HG--
extra : rebase_source : 0c4ba3a1345ab4c0165b69b28591e4cedf8249ff
2016-10-24 12:35:19 +08:00
Fred Lin
f8651156c0 Bug 1311614 - Move CustomRequestView to its own module;r=Honza
MozReview-Commit-ID: 6ffx5nokCN2

--HG--
extra : rebase_source : e9ad5a8c631f6a8cfd23374b1be97c4c0bac3411
2016-10-20 16:00:20 +08:00
dimi
2660320626 Bug 1305780 - P2. Testcase for update fail. r=gcp
MozReview-Commit-ID: CopsfRuawdm

--HG--
extra : rebase_source : 85a19da2ac4666cdc0ca48fb307f1d8994870282
2016-10-24 08:43:54 +08:00
DimiL
48ddedb04e Bug 1305780 - P1. Implement the update fail scheme for v4. r=gcp
MozReview-Commit-ID: LeVpVIUdmjc

--HG--
extra : rebase_source : bfc189b5a3f1cfc17bd269bcb7e7edad826769a3
2016-10-19 12:52:05 +08:00
Fred Lin
de12f55089 Bug 1308440 - Migrate Net Panel Context Menu with framework/menu API in NetMonitor panel;r=Honza
MozReview-Commit-ID: 47IM3jFPcXe

--HG--
extra : rebase_source : 85e0d1914a3d84d86d6be9313abc1126c14034bb
2016-10-17 15:01:52 +08:00
Gerald Squelart
116cef615e Bug 1311877 - VideoPlaybackQuality.totalVideoFrameCount is presented+dropped - r=jya
totalVideoFrameCount was previously incorrectly set to the number of demuxed
frames.
According to the current W3C specs [1], it should instead be the total number of
frames that have been presented, plus frames that have been discarded.

Also added a check that discarded<=total in mochitest.

[1] https://wicg.github.io/media-playback-quality/#concepts

MozReview-Commit-ID: Gnv1roM5n0A

--HG--
extra : rebase_source : 1f018612fbaf43867f5c92e59d62d718a3b08535
2016-10-21 12:01:59 +11:00
JW Wang
8921e3dab6 Bug 1308147. Part 6 - remove unused MDSM::mQueuedSeek for there is no code to modify it. r=kikuo
MozReview-Commit-ID: BlQydjfm4DI

--HG--
extra : rebase_source : 56c61685973059ce79845bb5536aa2373db52eac
extra : source : d232ec41605f08821ea9ca99af4ba762968a995e
2016-10-19 18:27:50 +08:00
JW Wang
41648a7e80 Bug 1308147. Part 5 - reject mPendingSeek in DormantState::Exit(). r=kikuo
MozReview-Commit-ID: HfQCWBNtUwZ

--HG--
extra : rebase_source : ebae0bc2c8c91a859eb254f5fa1c947abc869ed3
extra : source : 69296a28551d1e2d1013790e2cfd7e063beea246
2016-10-19 18:12:06 +08:00
JW Wang
a05dfac69c Bug 1308147. Part 4 - reject mPendingSeek in WaitForCDMState::Exit(). r=kikuo
MozReview-Commit-ID: H7ChCplXhBM

--HG--
extra : rebase_source : a55da8f58bdd9479672b9f48cc569b01136a301c
extra : source : e88328340a21b97f059c41d5f9a67fd7275379b2
2016-10-19 18:09:07 +08:00
JW Wang
5b97d25789 Bug 1308147. Part 3 - add DecodingFirstFrameState::mPendingSeek to store a pending seek job. r=kikuo
MozReview-Commit-ID: 4TMwk6q67go

--HG--
extra : rebase_source : d4e413492d1a703f27e3cb97aee789b4a9405972
extra : source : 83ee4f96ba2903efbda0bfc80b43d06bed57c680
2016-10-19 17:56:20 +08:00