~justinmcp/unity-chromium-extension/13.10

  • Committer: Tarmac
  • Author(s): Alexandre Abreu
  • Date: 2013-07-08 15:04:14 UTC
  • mfrom: (224.1.1 fix-chromium-28-support)
  • Revision ID: tarmac-20130708150414-2krskytsa61xd6v7
Tags: BRANCH_13_04
[Impact]

Workaround for an issue with Chromium 27 and 28 and Webapps. Webapps stopped working altogether with those chromium versions. What happened is that any javascript callback function that was called (whatever the stage) from chromium's internal could not access the NPAPI plugin variable (_uwa) that is a javascript object that is a bridge to the WebApps NPAPI plugin. Accessing the variable throws with an exception "NPObject has been deleted" (which is not the case).

The workaround rebinds the variable for every callback to the plugin node.

TECHNICAL DETAILS:
-----------------

There has been some changes recently in chromium 27+ around the v8 bindings' templates separated by world type (either page world or content script private world). Although I am not sure, it seemed to have an impact somewhere in the lookup location for V8NPObject v8 binding variables.

The "NPOBJect has been deleted" exception first occurs when webapps callback in the context_prepare() callback (from a native NPAPI function) that tries to call the plugin using _uwa. The variable is just closed over in the callback but is being looked up in the v8 binding for NPAPI (npObjectInvokeImpl() in WebCore/bindings/v8/V8NPObject.cpp) in the wrong World (page world instead of content script world).

The V8NPObject binding for the NPAPI plugin is apparently created properly (tagged w/ the proper world id) but somewhere along the line (copying?) something goes wrong.

[Test Case]

1. install the unity-chromium-extension,
2. open chromium 28 and make sure that the extension is properly detected (chrome://extensions),
3. go to e.g. facebook.com or bbc.co.uk./news,
4. make sure that a launcher icon appears and the webapps integrates (notifications for bbc and messaging menu for facebook),

[Regression Potential]

None since the fix is strictly confined in the webapps extension and webapps are currently broken.

Approved by PS Jenkins bot, Víctor R. Ruiz.
Filename Latest Rev Last Changed Committer Comment Size
..
.bzr-builddeb 205.2.1 11 years ago Robert Bruce Park Split source tree to build packages. Diff
chromium-extension 49 12 years ago Alexandre Abreu Fixes to build; expand npapi; add sanitizer; fixes Diff
chromium-patches 59 12 years ago Alexandre Abreu Added aggregated patches for chromium stable chann Diff
debian 205.2.2 11 years ago Robert Bruce Park Inline packaging metadata. Diff
m4 162.1.1 11 years ago Víctor R. Ruiz Coverage support (--enable-gcov) Diff
npapi-binding-gen 83.1.1 12 years ago Alexandre Abreu backup of changes Diff
npapi-plugin 49 12 years ago Alexandre Abreu Fixes to build; expand npapi; add sanitizer; fixes Diff
po 25 12 years ago Alexandre Abreu Integrate repo functionality; refactoring; package Diff
tests 67 12 years ago Alexandre Abreu A given context can be used from js as an UID (use Diff
.bzrignore 47 12 years ago Alexandre Abreu Minor changeS: remove g_message & various related 21 bytes Diff Download File
AUTHORS 25 12 years ago Alexandre Abreu Integrate repo functionality; refactoring; package Empty Diff Download File
File autogen.sh 25 12 years ago Alexandre Abreu Integrate repo functionality; refactoring; package 4.3 KB Diff Download File
ChangeLog 37 12 years ago Alexandre Abreu Fix build (files forgotten) Empty Diff Download File
configure.ac 222.1.1 11 years ago Alexandre Abreu Release 2.4.6 1.6 KB Diff Download File
Symlink COPYING 224.1.1 10 years ago Alexandre Abreu Fix chromium 27-28 support for webapps .
INSTALL 90 12 years ago Alexandre Abreu Unit testing for npapi 15.3 KB Diff Download File
Makefile.am 181 11 years ago Alexandre Abreu Update extra distcheck; fix #1059457; 198 bytes Diff Download File
Makefile.am.coverage 208.1.1 11 years ago Víctor R. Ruiz Add rule to generate Cobertura files with gcovr (m 1 KB Diff Download File
NEWS 37 12 years ago Alexandre Abreu Fix build (files forgotten) Empty Diff Download File
README 205 11 years ago Alexandre Abreu Forgot to tag release 2.4.4 1 bytes Diff Download File