[Gecko iOS] Land remaining changes from Cedar on mozilla-central
Categories
(GeckoView :: General, enhancement, P1)
Tracking
(firefox137 affected)
Tracking | Status | |
---|---|---|
firefox137 | --- | affected |
People
(Reporter: nika, Assigned: nika)
Details
Attachments
(22 files, 2 obsolete files)
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review |
Assignee | ||
Comment 1•5 months ago
|
||
This is the backend used on Android, and we plan to use the same architecture
on iOS.
Assignee | ||
Comment 2•5 months ago
|
||
The page size on arm64 macOS and iOS is 16k, yet we try to create stacks with
sizes which are not a multiple of 16k in some situations. Unify these stack
size calculations, and ensure they are always a multiple of 16k.
On arm64 macOS, the posix threads implementation is detecting stack sizes which
are a multiple of 4k, and rounding them up to a multiple of 16k to improve
compatibility, but that is not done on iOS.
Depends on D236401
Assignee | ||
Comment 3•5 months ago
|
||
This is a hack to align the android and iOS logging code. It is replaced with
an improved logging backend in D203492, which can be landed after this patch
stack.
Depends on D236402
Assignee | ||
Comment 4•5 months ago
|
||
As a large chunk of the Gecko-side frontend will be shared between Android and
iOS, this changes a number of prefs to be checking for mobile rather than
Android, under the assumption that mobile code will largely want the same configurations.
Depends on D236403
Assignee | ||
Comment 5•5 months ago
|
||
Depends on D236404
Assignee | ||
Comment 6•5 months ago
|
||
Depends on D236405
Assignee | ||
Comment 7•5 months ago
|
||
In the future we'll want to hook up to the system clipboard on iOS, but for now
we can use the headless clipboard to shim out the functionality.
Depends on D236406
Assignee | ||
Comment 8•5 months ago
|
||
Like on android, GeckoView on android does not work like on desktop, so the
Firefox Desktop default command line handler should not be used.
Depends on D236407
Assignee | ||
Comment 9•5 months ago
|
||
This aims to improve the handling of some behaviours, such as nested event
loops, to make them more similar to the behaviour on macOS.
Depends on D236408
Assignee | ||
Comment 10•5 months ago
|
||
This is required to support basic rendering on iOS.
Depends on D236409
Assignee | ||
Comment 11•5 months ago
|
||
This makes some methods which would previously retunr an error instead return a
default (empty) value, avoiding crashes/failures in callers.
This is required to enable basic rendering on iOS.
Depends on D236410
Assignee | ||
Comment 12•5 months ago
|
||
Without this change, the level and availPercent values would be uninitialized
in the error case.
Depends on D236411
Assignee | ||
Comment 13•5 months ago
|
||
Currently this has a large amount of copied code from Android, and contains
some fairly gross code for translating JS objects from/into Objective-C/Swift
NSDictionary objects.
In the future it would be nice to unify this more with the Android
implementation, to share code and other logic, but that has been left out of
scope for now.
Depends on D236412
Assignee | ||
Comment 14•5 months ago
|
||
The global dispatcher in GeckoView is currrently accessed through the
Services.androidBridge
object. This patch adds an instance of this object for
iOS.
This should be renamed (likely to geckoViewBridge) in a follow-up bug.
Depends on D236413
Assignee | ||
Comment 15•5 months ago
|
||
This shim matches the behaviour of nsUserIdleService on Android, which is also
minimal.
Depends on D236414
Assignee | ||
Comment 16•5 months ago
|
||
This is required to allow GeckoView modules to initialize during GeckoSession
startup, as it contains the initial configuration options.
Depends on D236415
Assignee | ||
Comment 17•5 months ago
|
||
This aligns the way that windows are created on iOS more with how they are
handled on Android, where there is no intial window created by Gecko startup,
and instead windows are created on-demand by the embedder to serve as content
for GeckoSessions.
Depends on D236416
Assignee | ||
Comment 18•5 months ago
|
||
This is required to use modern WebRender-based rendering on iOS, and aligns iOS
better with macOS when it comes to rendering.
Depends on D236417
Assignee | ||
Comment 19•5 months ago
|
||
This interfaces with the GeckoView internal API which has been added in
previous parts to expose a GeckoView-like interface to an example browser
application.
Currently this xcode project is not hooked into mozillabuild and needs to be
built & run separately. This should be changed in the future, with the
GeckoView framework extracted so that it can be used by other projects (e.g.
Firefox for iOS).
In addition, bundling of XUL is done using a bash script and rsync. While this
is functional for local testing, it should be improved with better iOS support
in the build system in the future.
Depends on D236418
Assignee | ||
Comment 20•5 months ago
|
||
iOS doesn't provide very granular sandbox controls, so this is the only
configuraiton we have. Like sandboxing on other platforms, this is performed
after start-up and can be controlled by the MOZ_DISABLE_CONTENT_SANDBOX
environment variable, and security.sandbox.content.level
pref.
Depends on D236420
Assignee | ||
Comment 21•5 months ago
|
||
Native event processing on iOS currently only really works in the primary
process, and should not be used in other processes. This aligns the code more
with macOS.
Depends on D236421
Updated•4 months ago
|
Updated•4 months ago
|
Updated•4 months ago
|
Updated•4 months ago
|
Updated•4 months ago
|
Updated•4 months ago
|
Updated•4 months ago
|
Assignee | ||
Comment 22•4 months ago
|
||
This platform-independent xpcom component appears to be indepently registered
in each platform's widget components.conf, so we also need to register it here
for iOS.
Depends on D236407
Updated•4 months ago
|
Updated•4 months ago
|
Updated•4 months ago
|
Updated•4 months ago
|
Updated•4 months ago
|
Updated•4 months ago
|
Updated•4 months ago
|
Updated•4 months ago
|
Updated•4 months ago
|
Updated•4 months ago
|
Updated•4 months ago
|
Updated•4 months ago
|
Updated•4 months ago
|
Updated•4 months ago
|
Updated•4 months ago
|
Comment 23•4 months ago
|
||
Comment 24•4 months ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/b7bb79fc3287
https://hg.mozilla.org/mozilla-central/rev/7a1747f9ccf7
https://hg.mozilla.org/mozilla-central/rev/f93ee14b5ac6
https://hg.mozilla.org/mozilla-central/rev/1def4e404b8e
https://hg.mozilla.org/mozilla-central/rev/dbad55e50e02
https://hg.mozilla.org/mozilla-central/rev/57f8d3989e6e
https://hg.mozilla.org/mozilla-central/rev/94854a893950
https://hg.mozilla.org/mozilla-central/rev/4560e84313ae
https://hg.mozilla.org/mozilla-central/rev/457c02bdb130
https://hg.mozilla.org/mozilla-central/rev/ca7ee3d3ff1e
https://hg.mozilla.org/mozilla-central/rev/dda5192538fa
https://hg.mozilla.org/mozilla-central/rev/c892f001d7f6
Assignee | ||
Comment 25•4 months ago
|
||
Re-opening as I've only landed the first 12 parts.
Updated•4 months ago
|
Updated•3 months ago
|
Updated•3 months ago
|
Updated•3 months ago
|
Updated•3 months ago
|
Assignee | ||
Comment 26•3 months ago
|
||
These methods were added previously in bug 1933373, but were not exposed
through GeckoViewSwiftSupport.
Depends on D236417
Assignee | ||
Comment 27•3 months ago
|
||
iOS has a similar situation to Android from D226135, and needs to reset small
alloc randomization for content processes after the allocator has already been
initialized.
Updated•3 months ago
|
Description
•