Closed Bug 1469714 Opened 6 years ago Closed 6 years ago

Experiment with the storage access API

Categories

(Core :: DOM: Core & HTML, enhancement, P2)

enhancement

Tracking

()

RESOLVED FIXED
mozilla64
Tracking Status
firefox64 --- fixed

People

(Reporter: ehsan.akhgari, Assigned: ehsan.akhgari)

References

(Depends on 2 open bugs, Blocks 1 open bug)

Details

(Keywords: dev-doc-complete)

Attachments

(21 files, 14 obsolete files)

2.74 KB, patch
baku
: review+
Details | Diff | Splinter Review
11.27 KB, patch
baku
: review-
Details | Diff | Splinter Review
4.50 KB, patch
baku
: review+
Details | Diff | Splinter Review
6.95 KB, patch
baku
: review+
Details | Diff | Splinter Review
6.90 KB, patch
baku
: review+
Details | Diff | Splinter Review
4.12 KB, patch
baku
: review+
Details | Diff | Splinter Review
8.18 KB, patch
baku
: review+
Details | Diff | Splinter Review
10.44 KB, patch
baku
: review+
Details | Diff | Splinter Review
7.37 KB, patch
baku
: review+
Details | Diff | Splinter Review
14.14 KB, patch
baku
: review+
Details | Diff | Splinter Review
46 bytes, text/x-phabricator-request
baku
: review+
Details | Review
46 bytes, text/x-phabricator-request
baku
: review+
Details | Review
46 bytes, text/x-phabricator-request
baku
: review+
Details | Review
46 bytes, text/x-phabricator-request
baku
: review+
Details | Review
46 bytes, text/x-phabricator-request
baku
: review+
Details | Review
46 bytes, text/x-phabricator-request
baku
: review+
Details | Review
46 bytes, text/x-phabricator-request
baku
: review+
Details | Review
46 bytes, text/x-phabricator-request
baku
: review+
Details | Review
46 bytes, text/x-phabricator-request
baku
: review+
Details | Review
46 bytes, text/x-phabricator-request
baku
: review+
Details | Review
46 bytes, text/x-phabricator-request
baku
: review+
Details | Review
      No description provided.
Assignee: nobody → ehsan
Priority: -- → P2
Blocks: cookierestrictions
No longer blocks: antitracking
Depends on: 1476796
These are WIP patches, not ready for review yet.
Attachment #8993499 - Attachment is obsolete: true
Attachment #8993500 - Attachment is obsolete: true
Attachment #8993501 - Attachment is obsolete: true
Attachment #8993502 - Attachment is obsolete: true
Depends on: 1478428
Attachment #8994616 - Attachment is obsolete: true
Attachment #8994617 - Attachment is obsolete: true
Attachment #8994618 - Attachment is obsolete: true
Attachment #8994619 - Attachment is obsolete: true
Attachment #8994620 - Attachment is obsolete: true
Attachment #8994621 - Attachment is obsolete: true
Attachment #8994622 - Attachment is obsolete: true
Attachment #8994623 - Attachment is obsolete: true
Attachment #8994624 - Attachment is obsolete: true
Attachment #8994625 - Attachment is obsolete: true
Attachment #8995029 - Flags: review?(amarchesini) → review+
Attachment #8995031 - Flags: review?(amarchesini) → review+
Attachment #8995032 - Flags: review?(amarchesini) → review+
Attachment #8995033 - Flags: review?(amarchesini) → review+
Attachment #8995034 - Flags: review?(amarchesini) → review+
Comment on attachment 8995035 [details] [diff] [review]
Part 7: Add tests for the Storage Access API interaction with worker APIs

Review of attachment 8995035 [details] [diff] [review]:
-----------------------------------------------------------------

::: toolkit/components/antitracking/test/browser/browser_blockingWorkers.js
@@ +1,1 @@
> +requestLongerTimeout(2);

usually when I see this, it's the beginning of intermittent failures... :)
Attachment #8995035 - Flags: review?(amarchesini) → review+
Attachment #8995036 - Flags: review?(amarchesini) → review+
Attachment #8995037 - Flags: review?(amarchesini) → review+
Attachment #8995038 - Flags: review?(amarchesini) → review+
Comment on attachment 8995030 [details] [diff] [review]
Part 2: Implement the Storage Access API to grant first-party storage access to 3rd party trackers

Review of attachment 8995030 [details] [diff] [review]:
-----------------------------------------------------------------

Just a comment about the checking of the permission in HasStorageAccess(). For the rest it looks good.

::: dom/base/nsDocument.cpp
@@ +13215,5 @@
> +  if (!global) {
> +    aRv.Throw(NS_ERROR_NOT_AVAILABLE);
> +    return nullptr;
> +  }
> +  

no extra spaces here

@@ +13229,5 @@
> +    if (outer->HasStorageAccess()) {
> +      promise->MaybeResolve(true);
> +      return promise.forget();
> +    }
> +  }

Here we need something like:

if (AntiTrackingCommon::IsFirstPartyStorageAccessGrantedFor(inner, mDocumentURI)) {
  promise->MaybeResolve(true);
  return promise.forget();
}

here a scenario why this is needed:

1. example.net has iframe(tracker.com).
2. iframe(tracker.com) uses the storage access API and we grant the permission.
3. the user reloads example.net, which loads iframe(tracker.com)
4. using storage access API, we should immediately say: yes you have the storage access because you have the permission previously set.

Am I right?

@@ +13236,5 @@
> +  // third-partiness here.
> +  if (NodePrincipal()->GetIsNullPrincipal() ||
> +      StaticPrefs::network_cookie_cookieBehavior() ==
> +        nsICookieService::BEHAVIOR_ACCEPT) {
> +    promise->MaybeResolve(false);

why 'false'? In this case, they have access to...

@@ +13346,5 @@
> +
> +  // Step 10. Grant the document access to cookies and store that fact for
> +  //          the purposes of future calls to hasStorageAccess() and
> +  //          requestStorageAccess().
> +  if (granted) {

if (granted && inner) { ... ?

::: dom/base/nsGlobalWindowOuter.h
@@ +984,5 @@
> +    return mHasStorageAccess;
> +  }
> +  void SetHasStorageAccess(bool aHasStorageAccess)
> +  {
> +    mHasStorageAccess = aHasStorageAccess;

I think this boolean should be mainly used for sandboxed windows.
For 'normal' windows, we should check the permission using AntiTrackingCommon methods.

::: dom/base/nsIDocument.h
@@ +1188,5 @@
> +    HasStorageAccess(mozilla::ErrorResult& aRv);
> +  already_AddRefed<mozilla::dom::Promise>
> +    RequestStorageAccess(mozilla::ErrorResult& aRv);
> +
> +private:

why this private: + public: ?
Attachment #8995030 - Flags: review?(amarchesini) → review-
Adding dev-doc-needed so MDN team can track progress.
Keywords: dev-doc-needed
(In reply to Andrea Marchesini [:baku] from comment #26)
> Comment on attachment 8995035 [details] [diff] [review]
> Part 7: Add tests for the Storage Access API interaction with worker APIs
> 
> Review of attachment 8995035 [details] [diff] [review]:
> -----------------------------------------------------------------
> 
> ::: toolkit/components/antitracking/test/browser/browser_blockingWorkers.js
> @@ +1,1 @@
> > +requestLongerTimeout(2);
> 
> usually when I see this, it's the beginning of intermittent failures... :)

Hah, yes!  :-)  But in this case, I did this merely because the length of this test has increased so much now (not complaining, yay for test coverage!)
(In reply to Andrea Marchesini [:baku] from comment #27)
> @@ +13229,5 @@
> > +    if (outer->HasStorageAccess()) {
> > +      promise->MaybeResolve(true);
> > +      return promise.forget();
> > +    }
> > +  }
> 
> Here we need something like:
> 
> if (AntiTrackingCommon::IsFirstPartyStorageAccessGrantedFor(inner,
> mDocumentURI)) {
>   promise->MaybeResolve(true);
>   return promise.forget();
> }
> 
> here a scenario why this is needed:
> 
> 1. example.net has iframe(tracker.com).
> 2. iframe(tracker.com) uses the storage access API and we grant the
> permission.
> 3. the user reloads example.net, which loads iframe(tracker.com)
> 4. using storage access API, we should immediately say: yes you have the
> storage access because you have the permission previously set.
> 
> Am I right?

Yes you are!  I did this in part 9, sorry if that is confusing.  There, in the hunk in nsGlobalWindowOuter::SetNewDocument(), I set mHasStorageAccess to the result of AntiTrackingCommon::IsFirstPartyStorageAccessGrantedFor(inner,
> mDocumentURI) effectively, so my code already takes care of this scenario all parts combined.  (There will also be a test for it inside browser_storageAccessSandboxed.js.)

> @@ +13236,5 @@
> > +  // third-partiness here.
> > +  if (NodePrincipal()->GetIsNullPrincipal() ||
> > +      StaticPrefs::network_cookie_cookieBehavior() ==
> > +        nsICookieService::BEHAVIOR_ACCEPT) {
> > +    promise->MaybeResolve(false);
> 
> why 'false'? In this case, they have access to...

No, true has a specific meaning, it means storage access has been granted to, in the sense of the Storage Access API (i.e., a previous call to requestStorageAccess() has been successful or something equivalent has happened.)

> ::: dom/base/nsGlobalWindowOuter.h
> @@ +984,5 @@
> > +    return mHasStorageAccess;
> > +  }
> > +  void SetHasStorageAccess(bool aHasStorageAccess)
> > +  {
> > +    mHasStorageAccess = aHasStorageAccess;
> 
> I think this boolean should be mainly used for sandboxed windows.
> For 'normal' windows, we should check the permission using
> AntiTrackingCommon methods.

The purpose of this boolean is just to keep track of whether "storage access has been granted" for the purposes of the Storage Access API, so that, for example, requestStorageAccess() can bypass redoing all of its checks if they have passed once before.

Sandboxed windows never have access to their storage.

We do check the permission using the AntiTrackingCommon methods in part 9.

One part that we don't cover yet is that if storage access gets granted after navigation through our heuristics and then the storage access API gets called, we wouldn't check the permission right then, and we would be attempting to set another permission (which just extends the expiration).  Is that what you meant?  I can fix that.

> ::: dom/base/nsIDocument.h
> @@ +1188,5 @@
> > +    HasStorageAccess(mozilla::ErrorResult& aRv);
> > +  already_AddRefed<mozilla::dom::Promise>
> > +    RequestStorageAccess(mozilla::ErrorResult& aRv);
> > +
> > +private:
> 
> why this private: + public: ?

Oops, sorry, I think I had some code in between this block here which I ended up removing later...
Flags: needinfo?(amarchesini)
So I have rebased all of my patches, fixed them up and made sure they pass tests again.  Some of them have undergone some substantial changes because of everything that has changed on mozilla-central in between.  I don't necessarily want a full-blown review from you on all of them but I think it's a good idea if you glance over them if you don't mind.  So sorry about how long it took me to land this. :-(
Comment on attachment 9008931 [details]
Bug 1469714 - Part 1: Add the allow-storage-access-by-user-activation iframe sandbox flag; r=baku

Andrea Marchesini [:baku] has approved the revision.
Attachment #9008931 - Flags: review+
Comment on attachment 9008933 [details]
Bug 1469714 - Part 3: Add tests for the Storage Access API interaction with cookies; r=baku

Andrea Marchesini [:baku] has approved the revision.
Attachment #9008933 - Flags: review+
Comment on attachment 9008934 [details]
Bug 1469714 - Part 4: Add tests for the Storage Access API interaction with IndexedDB; r=baku

Andrea Marchesini [:baku] has approved the revision.
Attachment #9008934 - Flags: review+
Comment on attachment 9008935 [details]
Bug 1469714 - Part 5: Add tests for the Storage Access API interaction with messaging APIs; r=baku

Andrea Marchesini [:baku] has approved the revision.
Attachment #9008935 - Flags: review+
Comment on attachment 9008936 [details]
Bug 1469714 - Part 6: Add tests for the Storage Access API interaction with localstorage/sessionstorage APIs; r=baku

Andrea Marchesini [:baku] has approved the revision.
Attachment #9008936 - Flags: review+
Comment on attachment 9008937 [details]
Bug 1469714 - Part 7: Add tests for the Storage Access API interaction with worker APIs; r=baku

Andrea Marchesini [:baku] has approved the revision.
Attachment #9008937 - Flags: review+
Comment on attachment 9008938 [details]
Bug 1469714 - Part 8: Add a test for the interaction of the Storage Access API with the allow-storage-access-by-user-activation iframe sandbox; r=baku

Andrea Marchesini [:baku] has approved the revision.
Attachment #9008938 - Flags: review+
Depends on: 1491403
Comment on attachment 9009306 [details]
Bug 1469714 - Part 11: Add a storage permission check to Document.hasStorageAccess() to ensure that it always returns the correct value even in the presence of dynamic heuristics grantic storage access permission; r=baku

Andrea Marchesini [:baku] has approved the revision.
Attachment #9009306 - Flags: review+
Comment on attachment 9008941 [details]
Bug 1469714 - Part 10: Ensure that private browsing contexts cannot get storage access; r=baku

Andrea Marchesini [:baku] has approved the revision.
Attachment #9008941 - Flags: review+
Comment on attachment 9008939 [details]
Bug 1469714 - Part 9: Ensure that the granted storage access permission is available for non-sandboxed third-party contexts upon navigation; r=baku

Andrea Marchesini [:baku] has approved the revision.
Attachment #9008939 - Flags: review+
Comment on attachment 9008932 [details]
Bug 1469714 - Part 2: Implement the Storage Access API to grant first-party storage access to 3rd party trackers; r=baku

Andrea Marchesini [:baku] has approved the revision.
Attachment #9008932 - Flags: review+
Pushed by eakhgari@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/fe750643da13
Part 1: Add the allow-storage-access-by-user-activation iframe sandbox flag; r=baku
https://hg.mozilla.org/integration/mozilla-inbound/rev/4db771422e75
Part 2: Implement the Storage Access API to grant first-party storage access to 3rd party trackers; r=baku
https://hg.mozilla.org/integration/mozilla-inbound/rev/f90b4272f420
Part 3: Add tests for the Storage Access API interaction with cookies; r=baku
https://hg.mozilla.org/integration/mozilla-inbound/rev/36e5c9e69f10
Part 4: Add tests for the Storage Access API interaction with IndexedDB; r=baku
https://hg.mozilla.org/integration/mozilla-inbound/rev/88f414c8cecc
Part 5: Add tests for the Storage Access API interaction with messaging APIs; r=baku
https://hg.mozilla.org/integration/mozilla-inbound/rev/ff443966e3d9
Part 6: Add tests for the Storage Access API interaction with localstorage/sessionstorage APIs; r=baku
https://hg.mozilla.org/integration/mozilla-inbound/rev/453370408672
Part 7: Add tests for the Storage Access API interaction with worker APIs; r=baku
https://hg.mozilla.org/integration/mozilla-inbound/rev/61dc8b46e7f6
Part 8: Add a test for the interaction of the Storage Access API with the allow-storage-access-by-user-activation iframe sandbox; r=baku
https://hg.mozilla.org/integration/mozilla-inbound/rev/158def1e0b8c
Part 9: Ensure that the granted storage access permission is available for non-sandboxed third-party contexts upon navigation; r=baku
https://hg.mozilla.org/integration/mozilla-inbound/rev/4a88ff107478
Part 10: Ensure that private browsing contexts cannot get storage access; r=baku
https://hg.mozilla.org/integration/mozilla-inbound/rev/0fb2ac9ad5ec
Part 11: Add a storage permission check to Document.hasStorageAccess() to ensure that it always returns the correct value even in the presence of dynamic heuristics grantic storage access permission; r=baku
Backed out 13 changesets (bug 1469714, bug 1491061) for bustages at src/dom/base/nsDocument.cpp, failures at test_browserGlue_bookmarkshtml.js and browser_startup.js on a CLOSED TREE

Backout link: https://hg.mozilla.org/integration/mozilla-inbound/rev/dc31941ced5814990fbddad3e8f85b1031bb85ca

Pushes with failures:

https://treeherder.mozilla.org/#/jobs?repo=mozilla-inbound&resultStatus=testfailed,busted,exception&revision=494e23ba027e71fe4e498384ed4e2871ff4bb041

https://treeherder.mozilla.org/#/jobs?repo=mozilla-inbound&resultStatus=testfailed,busted,exception&selectedJob=199690238&revision=0fb2ac9ad5ec112fd128c648cca4b4b6d37f7c0a

Log link for bustage: https://treeherder.mozilla.org/logviewer.html#?job_id=199690238&repo=mozilla-inbound&lineNumber=19475

Log snippet: [task 2018-09-17T14:15:34.233Z] 14:15:34     INFO -  make[4]: Leaving directory '/builds/worker/workspace/build/src/obj-firefox/dom/bindings'
[task 2018-09-17T14:15:34.233Z] 14:15:34     INFO -  make[4]: Entering directory '/builds/worker/workspace/build/src/obj-firefox/dom/bindings'
[task 2018-09-17T14:15:34.233Z] 14:15:34     INFO -  make[4]: Leaving directory '/builds/worker/workspace/build/src/obj-firefox/dom/bindings'
[task 2018-09-17T14:15:37.295Z] 14:15:37     INFO -  make[4]: Entering directory '/builds/worker/workspace/build/src/obj-firefox/dom/base'
[task 2018-09-17T14:15:37.299Z] 14:15:37     INFO -  /builds/worker/workspace/build/src/sccache2/sccache /builds/worker/workspace/build/src/clang/bin/clang++ --target=i686-linux-gnu -o Unified_cpp_dom_base7.o -c  -I/builds/worker/workspace/build/src/obj-firefox/dist/stl_wrappers -I/builds/worker/workspace/build/src/obj-firefox/dist/system_wrappers -include /builds/worker/workspace/build/src/config/gcc_hidden.h -DNDEBUG=1 -DTRIMMED=1 -DOS_POSIX=1 -DOS_LINUX=1 -DHAVE_SIDEBAR -DSTATIC_EXPORTABLE_JS_API -DMOZ_HAS_MOZGLUE -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -I/builds/worker/workspace/build/src/dom/base -I/builds/worker/workspace/build/src/obj-firefox/dom/base -I/builds/worker/workspace/build/src/dom/battery -I/builds/worker/workspace/build/src/dom/events -I/builds/worker/workspace/build/src/dom/media -I/builds/worker/workspace/build/src/dom/network -I/builds/worker/workspace/build/src/caps -I/builds/worker/workspace/build/src/docshell/base -I/builds/worker/workspace/build/src/dom/base -I/builds/worker/workspace/build/src/dom/file -I/builds/worker/workspace/build/src/dom/geolocation -I/builds/worker/workspace/build/src/dom/html -I/builds/worker/workspace/build/src/dom/ipc -I/builds/worker/workspace/build/src/dom/storage -I/builds/worker/workspace/build/src/dom/svg -I/builds/worker/workspace/build/src/dom/u2f -I/builds/worker/workspace/build/src/dom/xbl -I/builds/worker/workspace/build/src/dom/xml -I/builds/worker/workspace/build/src/dom/xslt/xpath -I/builds/worker/workspace/build/src/dom/xul -I/builds/worker/workspace/build/src/gfx/2d -I/builds/worker/workspace/build/src/image -I/builds/worker/workspace/build/src/js/xpconnect/loader -I/builds/worker/workspace/build/src/js/xpconnect/src -I/builds/worker/workspace/build/src/js/xpconnect/wrappers -I/builds/worker/workspace/build/src/layout/base -I/builds/worker/workspace/build/src/layout/forms -I/builds/worker/workspace/build/src/layout/generic -I/builds/worker/workspace/build/src/layout/style -I/builds/worker/workspace/build/src/layout/svg -I/builds/worker/workspace/build/src/layout/xul -I/builds/worker/workspace/build/src/netwerk/base -I/builds/worker/workspace/build/src/security/manager/ssl -I/builds/worker/workspace/build/src/widget -I/builds/worker/workspace/build/src/xpcom/ds -I/builds/worker/workspace/build/src/netwerk/sctp/datachannel -I/builds/worker/workspace/build/src/obj-firefox/ipc/ipdl/_ipdlheaders -I/builds/worker/workspace/build/src/ipc/chromium/src -I/builds/worker/workspace/build/src/ipc/glue -I/builds/worker/workspace/build/src/obj-firefox/dist/include -I/builds/worker/workspace/build/src/obj-firefox/dist/include/nspr -I/builds/worker/workspace/build/src/obj-firefox/dist/include/nss -fPIC -DMOZILLA_CLIENT -include /builds/worker/workspace/build/src/obj-firefox/mozilla-config.h -Qunused-arguments -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Qunused-arguments -Wall -Wempty-body -Wignored-qualifiers -Woverloaded-virtual -Wpointer-arith -Wshadow-field-in-constructor-modified -Wsign-compare -Wtype-limits -Wunreachable-code -Wunreachable-code-return -Wwrite-strings -Wno-invalid-offsetof -Wclass-varargs -Wfloat-overflow-conversion -Wfloat-zero-conversion -Wloop-analysis -Wc++1z-compat -Wc++2a-compat -Wcomma -Wimplicit-fallthrough -Werror=non-literal-null-conversion -Wstring-conversion -Wtautological-overlap-compare -Wno-inline-new-delete -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wformat -Wformat-security -Wno-gnu-zero-variadic-macro-arguments -Wno-unknown-warning-option -Wno-return-type-c-linkage -D_GLIBCXX_USE_CXX11_ABI=0 -fno-sized-deallocation -march=pentium-m -msse -msse2 -mfpmath=sse -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-exceptions -fno-strict-aliasing -fno-rtti -ffunction-sections -fdata-sections -fno-exceptions -fno-math-errno -pthread -pipe -g -Xclang -load -Xclang /builds/worker/workspace/build/src/obj-firefox/build/clang-plugin/libclang-plugin.so -Xclang -add-plugin -Xclang moz-check -O2 -fno-omit-frame-pointer -Werror -I/builds/worker/workspace/build/src/widget/gtk/compat-gtk3 -pthread -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/libpng12 -I/usr/include/gtk-3.0/unix-print -Wno-error=shadow  -MD -MP -MF .deps/Unified_cpp_dom_base7.o.pp   /builds/worker/workspace/build/src/obj-firefox/dom/base/Unified_cpp_dom_base7.cpp
[task 2018-09-17T14:15:37.301Z] 14:15:37     INFO -  In file included from /builds/worker/workspace/build/src/obj-firefox/dom/base/Unified_cpp_dom_base7.cpp:2:
[task 2018-09-17T14:15:37.301Z] 14:15:37     INFO -  /builds/worker/workspace/build/src/dom/base/nsDocument.cpp:13567:27: error: no member named 'ShouldHonorContentBlockingCookieRestrictions' in 'mozilla::AntiTrackingCommon'
[task 2018-09-17T14:15:37.301Z] 14:15:37     INFO -    if (AntiTrackingCommon::ShouldHonorContentBlockingCookieRestrictions() &&
[task 2018-09-17T14:15:37.301Z] 14:15:37     INFO -        ~~~~~~~~~~~~~~~~~~~~^
[task 2018-09-17T14:15:37.301Z] 14:15:37     INFO -  1 error generated.
[task 2018-09-17T14:15:37.301Z] 14:15:37     INFO -  /builds/worker/workspace/build/src/config/rules.mk:1121: recipe for target 'Unified_cpp_dom_base7.o' failed
[task 2018-09-17T14:15:37.301Z] 14:15:37     INFO -  make[4]: *** [Unified_cpp_dom_base7.o] Error 1
[task 2018-09-17T14:15:37.302Z] 14:15:37     INFO -  make[4]: Leaving directory '/builds/worker/workspace/build/src/obj-firefox/dom/base'
[task 2018-09-17T14:15:37.302Z] 14:15:37     INFO -  /builds/worker/workspace/build/src/config/recurse.mk:74: recipe for target 'dom/base/target' failed
[task 2018-09-17T14:15:37.302Z] 14:15:37     INFO -  make[3]: *** [dom/base/target] Error 2
[task 2018-09-17T14:15:37.302Z] 14:15:37     INFO -  make[3]: *** Waiting for unfinished jobs....


Log link for browser_startup.js: https://treeherder.mozilla.org/logviewer.html#?job_id=199696869&repo=mozilla-inbound&lineNumber=3102

log snippet: [task 2018-09-17T14:54:14.740Z] 14:54:14     INFO - TEST-PASS | browser/base/content/test/performance/browser_startup.js | should have no unexpected components loaded before profile selection - 
[task 2018-09-17T14:54:14.743Z] 14:54:14     INFO - TEST-INFO | started process screentopng
[task 2018-09-17T14:54:15.664Z] 14:54:15     INFO - TEST-INFO | screentopng: exit 0
[task 2018-09-17T14:54:15.665Z] 14:54:15     INFO - Buffered messages logged at 14:54:13
[task 2018-09-17T14:54:15.666Z] 14:54:15     INFO - Entering test bound 
[task 2018-09-17T14:54:15.666Z] 14:54:15     INFO - Buffered messages finished
[task 2018-09-17T14:54:15.668Z] 14:54:15     INFO - TEST-UNEXPECTED-FAIL | browser/base/content/test/performance/browser_startup.js | all components whitelist entries should have been used - Got 1, expected 0
[task 2018-09-17T14:54:15.670Z] 14:54:15     INFO - Stack trace:
[task 2018-09-17T14:54:15.671Z] 14:54:15     INFO - chrome://mochikit/content/browser-test.js:test_is:1304
[task 2018-09-17T14:54:15.673Z] 14:54:15     INFO - chrome://mochitests/content/browser/browser/base/content/test/performance/browser_startup.js:null:217
[task 2018-09-17T14:54:15.675Z] 14:54:15     INFO - chrome://mochikit/content/browser-test.js:Tester_execTest/<:1102
[task 2018-09-17T14:54:15.677Z] 14:54:15     INFO - chrome://mochikit/content/browser-test.js:Tester_execTest:1093
[task 2018-09-17T14:54:15.681Z] 14:54:15     INFO - chrome://mochikit/content/browser-test.js:nextTest/<:995
[task 2018-09-17T14:54:15.684Z] 14:54:15     INFO - chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:SimpleTest.waitForFocus/waitForFocusInner/focusedOrLoaded/<:795
[task 2018-09-17T14:54:15.685Z] 14:54:15     INFO - Not taking screenshot here: see the one that was previously logged
[task 2018-09-17T14:54:15.686Z] 14:54:15     INFO - TEST-UNEXPECTED-FAIL | browser/base/content/test/performance/browser_startup.js | unused components whitelist entry: XULStore.js - 
[task 2018-09-17T14:54:15.690Z] 14:54:15     INFO - Stack trace:
[task 2018-09-17T14:54:15.691Z] 14:54:15     INFO - chrome://mochitests/content/browser/browser/base/content/test/performance/browser_startup.js:null:220
[task 2018-09-17T14:54:15.692Z] 14:54:15     INFO - chrome://mochikit/content/browser-test.js:Tester_execTest/<:1102
[task 2018-09-17T14:54:15.694Z] 14:54:15     INFO - chrome://mochikit/content/browser-test.js:Tester_execTest:1093
[task 2018-09-17T14:54:15.695Z] 14:54:15     INFO - chrome://mochikit/content/browser-test.js:nextTest/<:995

Log link for xpcshell: https://treeherder.mozilla.org/logviewer.html#?job_id=199696924&repo=mozilla-inbound&lineNumber=2129

[task 2018-09-17T14:55:37.295Z] 14:55:37     INFO -  TEST-START | devtools/server/tests/unit/test_objectgrips-16.js
[task 2018-09-17T14:55:37.351Z] 14:55:37     INFO -  TEST-PASS | devtools/server/tests/unit/test_objectgrips-12.js | took 2948ms
[task 2018-09-17T14:55:37.510Z] 14:55:37     INFO -  TEST-PASS | devtools/server/tests/unit/test_objectgrips-09.js | took 3493ms
[task 2018-09-17T14:55:37.789Z] 14:55:37     INFO -  TEST-PASS | devtools/server/tests/unit/test_objectgrips-14.js | took 2425ms
[task 2018-09-17T14:55:38.364Z] 14:55:38     INFO -  TEST-PASS | devtools/server/tests/unit/test_objectgrips-15.js | took 1561ms
[task 2018-09-17T14:55:38.716Z] 14:55:38     INFO -  TEST-PASS | devtools/server/tests/unit/test_objectgrips-16.js | took 1416ms
[task 2018-09-17T14:55:38.773Z] 14:55:38     INFO -  TEST-PASS | devtools/server/tests/unit/test_listsources-03.js | took 17646ms
[task 2018-09-17T14:55:38.781Z] 14:55:38     INFO -  Retrying tests that failed when run in parallel.
[task 2018-09-17T14:55:38.791Z] 14:55:38     INFO -  TEST-START | browser/components/places/tests/unit/test_browserGlue_bookmarkshtml.js
[task 2018-09-17T14:55:38.963Z] 14:55:38  WARNING -  TEST-UNEXPECTED-FAIL | browser/components/places/tests/unit/test_browserGlue_bookmarkshtml.js | xpcshell return code: 0
[task 2018-09-17T14:55:38.965Z] 14:55:38     INFO -  TEST-INFO took 172ms
[task 2018-09-17T14:55:38.967Z] 14:55:38     INFO -  >>>>>>>
[task 2018-09-17T14:55:38.969Z] 14:55:38     INFO -  (xpcshell/head.js) | test MAIN run_test pending (1)
[task 2018-09-17T14:55:38.970Z] 14:55:38     INFO -  (xpcshell/head.js) | test run_next_test 0 pending (2)
[task 2018-09-17T14:55:38.970Z] 14:55:38     INFO -  (xpcshell/head.js) | test MAIN run_test finished (2)
[task 2018-09-17T14:55:38.970Z] 14:55:38     INFO -  running event loop
[task 2018-09-17T14:55:38.971Z] 14:55:38     INFO -  browser/components/places/tests/unit/test_browserGlue_bookmarkshtml.js | Starting
[task 2018-09-17T14:55:38.973Z] 14:55:38     INFO -  (xpcshell/head.js) | test pending (2)
[task 2018-09-17T14:55:38.977Z] 14:55:38     INFO -  PID 13234 | JavaScript error: jar:file:///builds/worker/workspace/build/application/firefox/browser/omni.ja!/components/nsBrowserGlue.js, line 313: NS_ERROR_UNEXPECTED: Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIPrefBranch.getCharPref]
[task 2018-09-17T14:55:38.977Z] 14:55:38     INFO -  (xpcshell/head.js) | test run_next_test 0 finished (2)
[task 2018-09-17T14:55:38.979Z] 14:55:38     INFO -  Unexpected exception NS_ERROR_XPC_GS_RETURNED_FAILURE: Component returned failure code: 0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE) [nsIJSCID.getService]
[task 2018-09-17T14:55:38.979Z] 14:55:38     INFO -  @/builds/worker/workspace/build/tests/xpcshell/tests/browser/components/places/tests/unit/test_browserGlue_bookmarkshtml.js:19:3
[task 2018-09-17T14:55:38.980Z] 14:55:38     INFO -  async*run_next_test/_run_next_test/<@/builds/worker/workspace/build/tests/xpcshell/head.js:1441:22
[task 2018-09-17T14:55:38.980Z] 14:55:38     INFO -  async*_run_next_test@/builds/worker/workspace/build/tests/xpcshell/head.js:1441:10
[task 2018-09-17T14:55:38.982Z] 14:55:38     INFO -  run@/builds/worker/workspace/build/tests/xpcshell/head.js:692:9
[task 2018-09-17T14:55:38.983Z] 14:55:38     INFO -  _do_main@/builds/worker/workspace/build/tests/xpcshell/head.js:219:3
[task 2018-09-17T14:55:38.983Z] 14:55:38     INFO -  _execute_test@/builds/worker/workspace/build/tests/xpcshell/head.js:533:5
[task 2018-09-17T14:55:38.983Z] 14:55:38     INFO -  @-e:1:1
[task 2018-09-17T14:55:38.985Z] 14:55:38     INFO -  exiting test
[task 2018-09-17T14:55:38.985Z] 14:55:38     INFO -  "CONSOLE_MESSAGE: (error) [JavaScript Error: "NS_ERROR_UNEXPECTED: Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIPrefBranch.getCharPref]" {file: "jar:file:///builds/worker/workspace/build/application/firefox/browser/omni.ja!/components/nsBrowserGlue.js" line: 313}]"
[task 2018-09-17T14:55:38.987Z] 14:55:38     INFO -  <<<<<<<
[task 2018-09-17T14:55:39.000Z] 14:55:39     INFO -  TEST-START | browser/components/places/tests/unit/test_browserGlue_corrupt_nobackup.js
[task 2018-09-17T14:55:39.244Z] 14:55:39  WARNING -  TEST-UNEXPECTED-FAIL | browser/components/places/tests/unit/test_browserGlue_corrupt_nobackup.js | xpcshell return code: 0
[task 2018-09-17T14:55:39.247Z] 14:55:39     INFO -  TEST-INFO took 240ms
Flags: needinfo?(ehsan)
Pushed by eakhgari@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/0bd20397d9b0
Part 1: Add the allow-storage-access-by-user-activation iframe sandbox flag; r=baku
https://hg.mozilla.org/integration/mozilla-inbound/rev/c5c95129eeb3
Part 2: Implement the Storage Access API to grant first-party storage access to 3rd party trackers; r=baku
https://hg.mozilla.org/integration/mozilla-inbound/rev/86d154372afe
Part 3: Add tests for the Storage Access API interaction with cookies; r=baku
https://hg.mozilla.org/integration/mozilla-inbound/rev/a01d787f48f3
Part 4: Add tests for the Storage Access API interaction with IndexedDB; r=baku
https://hg.mozilla.org/integration/mozilla-inbound/rev/6d6aa4414c62
Part 5: Add tests for the Storage Access API interaction with messaging APIs; r=baku
https://hg.mozilla.org/integration/mozilla-inbound/rev/c0c7fb0b3c73
Part 6: Add tests for the Storage Access API interaction with localstorage/sessionstorage APIs; r=baku
https://hg.mozilla.org/integration/mozilla-inbound/rev/4caa329ed0a0
Part 7: Add tests for the Storage Access API interaction with worker APIs; r=baku
https://hg.mozilla.org/integration/mozilla-inbound/rev/7283f4c924fd
Part 8: Add a test for the interaction of the Storage Access API with the allow-storage-access-by-user-activation iframe sandbox; r=baku
https://hg.mozilla.org/integration/mozilla-inbound/rev/dacb7b20513c
Part 9: Ensure that the granted storage access permission is available for non-sandboxed third-party contexts upon navigation; r=baku
https://hg.mozilla.org/integration/mozilla-inbound/rev/62a37becb7a4
Part 10: Ensure that private browsing contexts cannot get storage access; r=baku
https://hg.mozilla.org/integration/mozilla-inbound/rev/5f0d3c89e6c0
Part 11: Add a storage permission check to Document.hasStorageAccess() to ensure that it always returns the correct value even in the presence of dynamic heuristics grantic storage access permission; r=baku
Flags: needinfo?(ehsan)
Depends on: 1494476
Flags: needinfo?(amarchesini)
Depends on: 1498250
Depends on: 1498251
Depends on: 1498369
Depends on: 1498370
Depends on: 1498372
We've documented this (well, mostly the engineers did — thanks folks!)

https://developer.mozilla.org/en-US/docs/Web/API/Storage_Access_API
Depends on: 1513021
Component: DOM → DOM: Core & HTML
Depends on: 1543720
Depends on: 1557097
Regressions: 1566825
Depends on: 1570802
Depends on: 1678024
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: