WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
Bug 108009
The notification constructor needs to check permissions synchronously
https://bugs.webkit.org/show_bug.cgi?id=108009
Summary
The notification constructor needs to check permissions synchronously
jochen
Reported
2013-01-26 11:38:04 PST
The notification constructor needs to check permissions synchronously
Attachments
Patch
(3.81 KB, patch)
2013-01-26 12:06 PST
,
jochen
no flags
Details
Formatted Diff
Diff
Patch
(10.74 KB, patch)
2013-01-26 12:12 PST
,
jochen
no flags
Details
Formatted Diff
Diff
Patch
(7.38 KB, patch)
2013-01-26 13:32 PST
,
jochen
no flags
Details
Formatted Diff
Diff
Patch for landing
(7.50 KB, patch)
2013-01-27 02:36 PST
,
jochen
no flags
Details
Formatted Diff
Diff
Show Obsolete
(3)
View All
Add attachment
proposed patch, testcase, etc.
jochen
Comment 1
2013-01-26 12:06:56 PST
Created
attachment 184877
[details]
Patch
jochen
Comment 2
2013-01-26 12:12:45 PST
Created
attachment 184878
[details]
Patch
Build Bot
Comment 3
2013-01-26 12:38:51 PST
Comment on
attachment 184878
[details]
Patch
Attachment 184878
[details]
did not pass mac-wk2-ews (mac-wk2): Output:
http://queues.webkit.org/results/16122899
Build Bot
Comment 4
2013-01-26 13:02:34 PST
Comment on
attachment 184878
[details]
Patch
Attachment 184878
[details]
did not pass mac-ews (mac): Output:
http://queues.webkit.org/results/16114962
Adam Barth
Comment 5
2013-01-26 13:04:51 PST
Comment on
attachment 184878
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=184878&action=review
Looks like you've got a problem with mac.
> Source/WebCore/Modules/notifications/Notification.cpp:113 > + ASSERT(static_cast<Document*>(context)->page());
I don't think this ASSERT is valid. Create a popup window, grab a reference to its Notification constructor, and then close the popup. Now, if you call the Notification constructor, the page will be 0.
Adam Barth
Comment 6
2013-01-26 13:05:57 PST
http://www.w3.org/TR/notifications/#dom-notification
doesn't say anything about the constructor throwing an exception...
jochen
Comment 7
2013-01-26 13:32:54 PST
Created
attachment 184882
[details]
Patch
jochen
Comment 8
2013-01-26 13:33:30 PST
You're right. I moved the check from the timer to show() I also changed the assert into just exiting gracefully if the page is gone.
Adam Barth
Comment 9
2013-01-26 15:02:33 PST
Comment on
attachment 184882
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=184882&action=review
> LayoutTests/fast/notifications/notifications-constructor-with-permission.html:25 > + setTimeout(function() { testRunner.notifyDone(); }, 100);
This isn't flaky because the timer gets scheduled first, right?
jochen
Comment 10
2013-01-27 02:36:59 PST
Created
attachment 184908
[details]
Patch for landing
WebKit Review Bot
Comment 11
2013-01-27 03:00:00 PST
Comment on
attachment 184908
[details]
Patch for landing Clearing flags on attachment: 184908 Committed
r140927
: <
http://trac.webkit.org/changeset/140927
>
WebKit Review Bot
Comment 12
2013-01-27 03:00:04 PST
All reviewed patches have been landed. Closing bug.
Jon Lee
Comment 13
2013-01-28 03:09:52 PST
Why was this change necessary? With the legacy API you end up checking permissions twice-- once at construction (which throws an error) and once at show() (which calls onerror). For the standard API show() is called on a 0-delay timer when the notification is created, so this change is a no-op, essentially. But it seems odd to have to check the permission twice for the legacy case.
jochen
Comment 14
2013-01-28 03:14:17 PST
(In reply to
comment #13
)
> Why was this change necessary? With the legacy API you end up checking permissions twice-- once at construction (which throws an error) and once at show() (which calls onerror). > > For the standard API show() is called on a 0-delay timer when the notification is created, so this change is a no-op, essentially. But it seems odd to have to check the permission twice for the legacy case.
Because new Notification("blah").show() would show a notification
Jake Archibald
Comment 15
2013-01-29 07:50:48 PST
Btw, the show() method is no longer part of the spec. Notifications show when they're constructed
http://notifications.spec.whatwg.org/
Jake Archibald
Comment 16
2013-01-29 07:59:39 PST
(disregard my comment, I didn't see the 'legacy' part of the show() discussion)
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug