Platform/JS Compartments Mochitest

From MozillaWiki
Jump to navigation Jump to search

This page is a tracking page for getting the JS compartments work to pass xpcshell tests and Mochitests and other automated test suites.

How to get the patch queue

Install hg queues.

Then add to .hg/patches/.hg/hgrc

[paths]

default = http://hg.mozilla.org/users/mrbkap_mozilla.com/brain-transplants

Then go into .hg/patches and hg pull, hg up and then go back to ../../ and do hg qpush -a. Build. Every time we update the queue you have to do qpop -a in the repository, then pull and update the patch queue, and then go back and do qpush -a to get the patches applied again.

xpcshell

default compartment leaks

bug 599761 (_newJSDContext), landed

bug 599762 (js::ctypes::CClosure::ClosureStub), landed

bug 600022 (XPCShellEnvironment::Init()), landed

bug 600032 (JetpackChild::Init()), landed

bug 600173 (atoms should always be in the default compartment), ready to land

bug 600402 (don't copy strings for the same compartment), patch in bug

bug 600580 (_newJSDContext, part 2), backed out, fixed, landed

Mochitest

Run with python runtests.py --total-chunks=20 --this-chunk=n --autorun --debugger=gdb where n is the chunk you want to examine.

Remaining large-ish items

  • XPCSafeJSObjectWrapper::WrapObject() fails
 -> remove XPCSafeJSObjectWrapper
  • XPCNW holder objects vs JS_ClearScope()
 -> In nsJSEnvironment.cpp call JS_ClearScope on wrapper->getProxyExtra()
  • Fix up XrayWrappers
  • IndexedDB and DOM worker tests, need cross compartment structured clone (jorendorff/bent)

Minor

  • Error hacks?

FIXED issues:

  • Make chrome wrappers expose nothing by default
  • added scriptOnly check to chrome object and make all XOWs script only
  • Location object
  • nsJSContext::BindCompiledEventHandler(), target and funobj from
  • Components.utils.import() from non-chrome code.
  • DocShell navigation tests
  • XPCNativeWrapper.unwrap() different compartments

failing tests:

http://mochi.test:8888/tests/dom/tests/mochitest/ajax/offline/test_updatingManifest.html
http://mochi.test:8888/tests/dom/tests/mochitest/bugs/test_bug396843.html
http://mochi.test:8888/tests/dom/src/tests/threads/test/test_json.html (crash in js engine code)
http://mochi.test:8888/tests/content/base/test/test_bug574596.html

assert-to-death tests:

/tests/toolkit/components/passwordmgr/test/test_basic_form_observer_autofillForms.html
/tests/toolkit/components/passwordmgr/test/test_basic_form_observer_foundLogins.html

Make chrome tests:

[TODO] http://mochi.test:8888/tests/js/src/xpconnect/tests/mochitest/test_cows.html
[Done] /tests/js/src/xpconnect/tests/mochitest/test_bug484459.html (XPCSafeJSObjectWrapper)
[Done but real failures] /tests/js/src/xpconnect/tests/mochitest/test_wrappers.html (XPCSafeJSObjectWrapper)

Chunk 1

pass, 22848 tests

Chunk 2

pass

Chunk 3

pass

Chunk 4

pass, 19244 tests

Chunk 5

pass, with the exception of the tests listed above (two worker tests).

Chunk 6

fail, 4701 tests. 12 failures, all listed up top.

Chunk 7

pass, 194 tests

Chunk 8

pass, 346 tests

Chunk 9

pass, 159 tests

Chunk 10

pass, 396 tests

Chunk 11

pass, 234 tests

Chunk 12

pass, ~300ish tests

Chunk 13

pass, 458 tests

Chunk 14

pass, 482 tests

Chunk 15

pass, 491 tests

Chunk 16

gets stuck on test_postMessage.html. Used to pass :(

Chunk 17

pass, 573 tests (sloooooooooow to run)

Chunk 18

pass, 5073 tests

Chunk 19

pass

Chunk 20

pass, 17850 tests, with the exception of the passwrd manager failures listed up top.

Mochichrome

35 failing tests, in these files:

chrome://mochikit/content/chrome/docshell/test/chrome/test_bug454235.xul
chrome://mochikit/content/chrome/js/src/xpconnect/tests/chrome/test_bug500931.xul
chrome://mochikit/content/chrome/js/src/xpconnect/tests/chrome/test_evalInSandbox.xul
 -> add a function that the sandbox can call which forwards to getClassName
chrome://mochikit/content/chrome/layout/base/test/chrome/test_printpreview.xul
chrome://mochikit/content/chrome/toolkit/content/tests/chrome/test_browser_drop.xul
chrome://mochikit/content/chrome/widget/tests/test_input_events_on_deactive_window.xul

Browserchrome