mozilla / positron

a experimental, Electron-compatible runtime on top of Gecko
Other
562 stars 64 forks source link

give a document loaded in a top-level docshell the system principal #66

Closed mykmelez closed 8 years ago

mykmelez commented 8 years ago

@brendandahl This seems to make the HTML document loaded by the sample browser into the top-level window of a BrowserWindow have a system principal on the webview-element branch. It breaks something else, though, since the initial URL no longer loads in the mozbrowser.

mykmelez commented 8 years ago

After bisecting, I've discovered that the issue is unrelated to the webview-element branch. This branch breaks mozbrowser by itself.

The two additional changes I've pushed to this branch, c1bcfa7 and 61761fd, simply enable mozbrowser and add a mozbrowser to the hello-world app. That mozbrowser loads a document successfully on master, but it doesn't load one on this branch. And if I build debug, I see suspicious warnings and then an assertion, which don't appear on master:

[Child 87931] WARNING: no triggering principal available via loadInfo, assuming load is cross-origin: file /Users/myk/Projects/positron/netwerk/protocol/http/HttpBaseChannel.cpp, line 1406 [Child 87931] WARNING: no triggering principal available via loadInfo, assuming load is cross-origin: file /Users/myk/Projects/positron/netwerk/protocol/http/HttpBaseChannel.cpp, line 1406 [Child 87931] WARNING: no triggering principal available via loadInfo, assuming load is cross-origin: file /Users/myk/Projects/positron/netwerk/protocol/http/HttpBaseChannel.cpp, line 1406 [Child 87931] WARNING: no triggering principal available via loadInfo, assuming load is cross-origin: file /Users/myk/Projects/positron/netwerk/protocol/http/HttpBaseChannel.cpp, line 1406 [Child 87931] WARNING: no triggering principal available via loadInfo, assuming load is cross-origin: file /Users/myk/Projects/positron/netwerk/protocol/http/HttpBaseChannel.cpp, line 1406 [Child 87931] WARNING: no triggering principal available via loadInfo, assuming load is cross-origin: file /Users/myk/Projects/positron/netwerk/protocol/http/HttpBaseChannel.cpp, line 1406 [Child 87931] WARNING: no triggering principal available via loadInfo, assuming load is cross-origin: file /Users/myk/Projects/positron/netwerk/protocol/http/HttpBaseChannel.cpp, line 1406 Assertion failure: originAttrsLoadInfo.mInIsolatedMozBrowser == loadContextIsInBE (The value of InIsolatedMozBrowser in the loadContext and in the loadInfo are not the same!), at /Users/myk/Projects/positron/netwerk/base/nsNetUtil.cpp:2425

01: NSCompareLoadInfoAndLoadContext(nsIChannel)[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0x35c049]

02: mozilla::net::nsHttpChannel::AsyncOpen(nsIStreamListener, nsISupports)[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0x8fedda]

03: mozilla::net::nsHttpChannel::AsyncOpen2(nsIStreamListener_)[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0x9013f4]

04: mozilla::net::HttpChannelParent::DoAsyncOpen(mozilla::ipc::URIParams const&, mozilla::ipc::OptionalURIParams const&, mozilla::ipc::OptionalURIParams const&, mozilla::ipc::OptionalURIParams const&, unsigned int const&, mozilla::ipc::OptionalURIParams const[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0x87889c]

05: mozilla::net::HttpChannelParent::Init(mozilla::net::HttpChannelCreationArgs const&)[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0x876c99]

06: mozilla::net::NeckoParent::RecvPHttpChannelConstructor(mozilla::net::PHttpChannelParent_, mozilla::dom::PBrowserOrId const&, IPC::SerializedLoadContext const&, mozilla::net::HttpChannelCreationArgs const&)[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0x9b5ff6]

07: mozilla::net::PNeckoParent::OnMessageReceived(IPC::Message const&)[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0xe12401]

08: mozilla::dom::PContentParent::OnMessageReceived(IPC::Message const&)[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0x1215238]

09: mozilla::ipc::MessageChannel::DispatchAsyncMessage(IPC::Message const&)[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0xb8f679]

10: mozilla::ipc::MessageChannel::DispatchMessage(IPC::Message const&)[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0xb8e84e]

11: mozilla::ipc::MessageChannel::OnMaybeDequeueOne()[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0xb891c7]

12: decltype(_(fp).fp0(mozilla::Get<>(fp1).PassAsParameter())) nsRunnableMethodArguments<>::applyImpl<mozilla::ipc::MessageChannel, bool (mozilla::ipc::MessageChannel::)()>(mozilla::ipc::MessageChannel, bool (mozilla::ipc::MessageChannel::)(), mozilla::Tu[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0xbb50d3]

13: _ZN25nsRunnableMethodArgumentsIJEE5applyIN7mozilla3ipc14MessageChannelEMS4_FbvEEEDTcl9applyImplfp_fp0_dtdefpT10mArgumentscvNS2_13IndexSequenceIJEEE_EEEPTT0[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0xbb5039]

14: nsRunnableMethodImpl<bool (mozilla::ipc::MessageChannel::*)(), false, true>::Run()[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0xbb4d96]

15: mozilla::ipc::MessageChannel::RefCountedTask::Run()[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0xbafc55]

16: mozilla::ipc::MessageChannel::DequeueTask::Run()[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0xbaf9ac]

17: nsThread::ProcessNextEvent(bool, bool_)[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0x1b45e4]

18: NSProcessPendingEvents(nsIThread, unsigned int)[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0x23e647]

19: nsBaseAppShell::NativeEventCallback()[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0x4500186]

20: nsAppShell::ProcessGeckoEvents(void_)[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0x459a085]

21: CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION[/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation +0x80a01]

22: __CFRunLoopDoSources0[/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation +0x72b8d]

23: __CFRunLoopRun[/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation +0x721bf]

24: CFRunLoopRunSpecific[/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation +0x71bd8]

25: RunCurrentEventLoopInMode[/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox +0x3256f]

26: ReceiveNextEventCommon[/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox +0x322ea]

27: _BlockUntilNextEventMatchingListInModeWithFilter[/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox +0x3212b]

28: _DPSNextEvent[/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit +0x918ab]

29: -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:][/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit +0x90e58]

30: -[GeckoNSApplication nextEventMatchingMask:untilDate:inMode:dequeue:][/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0x4598b47]

31: -[NSApplication run][/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit +0x86af3]

32: nsAppShell::Run()[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0x459aa6c]

33: nsAppStartup::Run()[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0x5644ce1]

34: XREMain::XRE_mainRun()[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0x56bc55e]

35: XREMain::XRE_main(int, char_, nsXREAppData const)[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0x56bd436]

36: XRE_main[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0x56bd927]

37: main[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/positron +0x128e]

[Child 87931] ###!!! ABORT: Aborting on channel error.: file /Users/myk/Projects/positron/ipc/glue/MessageChannel.cpp, line 2050 Crash Annotation GraphicsCriticalError: |[C0][GFX1-]: Receive IPC close with reason=AbnormalShutdown (t=17.7293) 06-03 00:01 > #01: mozilla::ipc::MessageChannel::OnChannelErrorFromLink()[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0xb90087]

02: mozilla::ipc::ProcessLink::OnChannelError()[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0xb91cf5]

03: non-virtual thunk to mozilla::ipc::ProcessLink::OnChannelError()[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0xb91d2c]

04: IPC::Channel::ChannelImpl::OnFileCanReadWithoutBlocking(int)[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0xb0caef]

05: base::MessagePumpLibevent::OnLibeventNotification(int, short, void_)[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0xad6dde]

06: event_persist_closure[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0xb64878]

07: event_process_active_single_queue[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0xb640d0]

08: event_process_active[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0xb4ce76]

09: event_base_loop[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0xb4bf87]

10: base::MessagePumpLibevent::Run(base::MessagePump::Delegate_)[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0xad722c]

11: MessageLoop::RunInternal()[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0xad4ab5]

12: MessageLoop::RunHandler()[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0xad4a15]

13: MessageLoop::Run()[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0xad49bd]

14: base::Thread::ThreadMain()[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0xaf9587]

15: ThreadFunc(void*)[/Users/myk/Projects/positron/obj-x86_64-apple-darwin14.5.0-debug/dist/PositronDebug.app/Contents/MacOS/XUL +0xaf9a6e]

16: _pthread_body[/usr/lib/system/libsystem_pthread.dylib +0x405a]

17: _pthread_body[/usr/lib/system/libsystem_pthread.dylib +0x3fd7]

[Child 87931] ###!!! ABORT: Aborting on channel error.: file /Users/myk/Projects/positron/ipc/glue/MessageChannel.cpp, line 2050 Hit MOZ_CRASH() at /Users/myk/Projects/positron/memory/mozalloc/mozalloc_abort.cpp:33

mykmelez commented 8 years ago

@jryans Any chance you might know what's going on here? This branch is an attempt to help us tackle issues like #45, #64, and #65 by loading a BrowserWindow file: URL with a system principal (just as chrome: URLs are loaded with that principal). But doing so seems to break mozbrowser usage in the BrowserWindow. Presumably this is a use case that you didn't encounter when implementing support for mozbrowser in Firefox chrome docs, but perhaps you have insight into the reason it might be happening?

mykmelez commented 8 years ago

@brendandahl noticed that a non-remote mozbrowser works on this branch, so the problem is specific to remote mozbrowser. We'll want something like this (although perhaps not exactly this) to work with remote mozbrowser too. But for now I've merged this into the webview-element branch with the workaround of removing the "remote" attribute from its mozbrowser. We shouldn't merge this, though, so I'm closing it and will file a followup to implement a proper way to give the BrowserWindow a system principal (without breaking remote mozbrowser).