Avoiding double draw() calls
Maintain the current position in the document when zooming
Update the annotationLayer when using CSS only zoom
Move the Swedish l10n
Merge pull request #4074 from Snuffleupagus/maintain-position-on-zoom

Maintain the current position in the document when zooming
Merge pull request #4109 from Snuffleupagus/css-zoom-annotations

Update the annotationLayer when using CSS only zoom
Merge pull request #4116 from Snuffleupagus/move-Swedish-l10n

Move the Swedish l10n
Make presentation mode use a black background
Merge pull request #4117 from timvandermeij/presentation-mode-background

Make presentation mode use a black background
Merge pull request #4114 from Rob--W/crx-executeScriptInFrame-fix

Update chrome.tabs.executeScriptInFrame dependency
De-inline CSS for the 'open file' button
Merge pull request #4120 from timvandermeij/css-deinlining

De-inline CSS for the 'open file' button
Prevent the open file button from appearing in the B2G viewer/preview
Merge pull request #4121 from timvandermeij/open-button-b2g

Prevent the open file button from appearing in the B2G viewer/preview
Use a more compact typed array to pass the image mask from the worker to the main thread.
Fixes type3 glyph compilation for bitpacked mask
Merge pull request #4122 from yurydelendik/bug878397

Use a more compact typed array to pass the image mask from the worker
Merge pull request #4081 from yurydelendik/doubledraw

Avoiding double draw() calls
Proof of concept using chrome.streamsPrivate API

This method captures all application/pdf streams, loads the viewer
and passes the stream to the PDF.js viewer.

This commit shows a proof of concept using the chrome.streamsPrivate API.

Advantages of new method:
- Access to the response body of the original request, thus fewer
  network requests.
- PDFs from non-GET requests (e.g. POST) are now supported.
- FTP files are also supported.

Possible improvements:
- Use declared content scripts instead of dynamic chrome.tabs.executeScript.
  This allows the extension to render the viewer in frames when the
  extension is disallowed to run executeScript for the top URL.
- Use chrome.declarativeWebRequest instead of webRequest, and replace
  background page with event page (don't forget to profile the
  difference & will the background/event page still work as intended?).
Insert dummy content script at every location.

This is needed for propagating the extension's permissions
to the extension's iframe, in the rare event that the PDF is
loaded in a sub frame, and the extension does not have access to the
top frame. For instance, when a http:-PDF file is embedded in a
local file, while "Allow access to local URLs" is disabled.

Note: Propagating permissions by inserting content scripts is an
 undocumented feature (http://crbug.com/302548).

Whenever it breaks, the issue (cross-domain permissions for XHR)
can be solved by using a content script that gets the blob using
the XMLHttpRequest API, followed by `postMessage` (via transferables)
to efficiently pass the arraybuffer back to the PDF Viewer.