Commit Graph

31260 Commits

Author SHA1 Message Date
Cathy Lu
3b90b13153 Bug 1601420 - Implement permissions.request/optional web extension permissions for geckoview r=geckoview-reviewers,agi,robwu
The general idea is that when extensions are installed at startup, they request permissions needed. Some examples of permissions might be access to downloads or bookmarks. This patch implements the ability to request permissions after install during runtime. A common optional permission is geolocation. The app won't request the user's location until needed.

GeckoView will provide a delegate to apps called onOptionalPrompt that provides the extension and the permissions the extension is requesting. They can then query the user to accept or reject the permission. The delegate works by listening to the browser API browser.permissions.request. Any browser API will be linked to a corresponding file and function such as ext-permissions.js::request() in this example. request() notifies observers of the topic webextension-optional-permission-prompt. ExtensionPromptObserver listens to that topic and dispatches an event GeckoView:WebExtension:OptionalPrompt. The geckoview web extension controller listens on that event and pass the extension and permissions to the skeleton delegate functions, that will get implemented by the app.

To verify this works, the test case WebExtensionTest.kt installs an extension through the package xpi. The package is created on build from moz.build to contain the extension's manifest.json and necessary scripts. Once the extension package is installed, we load the html script in the package that states when the page is clicked, trigger the browser API browser.permissions.request. The click is simulated with synthesizeTap. This request is then observed by listeners like mentioned in the previous paragraph. We verify in our skeleton delegate that the permissions provided match the ones requested.

Differential Revision: https://phabricator.services.mozilla.com/D143925
2022-05-02 19:45:39 +00:00
Tim Giles
0f7e6a5e25 Bug 1764709 - Always normalize credit card expiration month and year when creating a new record. r=geckoview-reviewers,dimi,sgalich,agi
Differential Revision: https://phabricator.services.mozilla.com/D144055
2022-05-02 18:18:39 +00:00
Makoto Kato
34944ac4bd Bug 1757031 - Don't restore previous viewport when window size isn't same. r=emilio
Fenix's Picture-In-Picture uses full screen mode. So it isn't same as Firefox
Desktop. When exiting full screen, Fenix's window may not same as before
entering full screen.

When this occurs,

1. When device is portrait orientation, user changes to full screen by content
   script.
2. Fenix enters to full screen then orientation is changed to landscape.
3. User changes that device is changed to landscape by hand.
4. Fenix enters PiP mode. Android (Home screen) change to portrait orientation.
   Then PiP window keeps landscape orientation.
5. When exiting PiP, full screen will be exited.
6. Device is landscape (by Step 3.), so Fenix window is landscape. But Gecko
   restores 1.'s viewport by `nsIDOMWindowUtils.exitFullScreen`. So viewport
   becomes portrait orientation size even if window is landscape orientation.

For PiP mode, although nsIDOMWindowUtils.exitFullScreen is used, it doesn't
consider this situation. So I would like to add non-restore option for it.

Differential Revision: https://phabricator.services.mozilla.com/D143992
2022-05-02 13:00:39 +00:00
Emilio Cobos Álvarez
c808d42538 Bug 1766110 - Try to avoid intermittent race in PromptDelegateTest. r=agi
Differential Revision: https://phabricator.services.mozilla.com/D144707
2022-04-27 18:42:42 +00:00
Butkovits Atila
95691e9784 Bug 1766322 - Lint fix. r=fix. CLOSED TREE 2022-04-27 20:45:18 +03:00
Cathy Lu
1d8822e53e Bug 1766322 - Check browser.frameLoader for tab prioritization r=geckoview-reviewers,agi
Differential Revision: https://phabricator.services.mozilla.com/D144844
2022-04-27 17:17:53 +00:00
Emilio Cobos Álvarez
f65f5da5fc Bug 1766395 - Don't use click event to show date/time/datetime-local input. r=agi
MozShowDateTimePicker should be enough for this. We keep using click for
week / month because those don't implement a widget cross-platform.

Differential Revision: https://phabricator.services.mozilla.com/D144801
2022-04-27 16:27:56 +00:00
Molnar Sandor
fe42240a8a Backed out changeset 360f31b00167 (bug 1764709) for causing bc failures in browser_creditCard_submission_normalized. CLOSED TREE 2022-04-27 07:46:31 +03:00
Tim Giles
85c6184467 Bug 1764709 - Always normalize credit card expiration month and year when creating a new record. r=geckoview-reviewers,dimi,sgalich,agi
Differential Revision: https://phabricator.services.mozilla.com/D144055
2022-04-26 21:53:17 +00:00
Henrik Skupin
72eb782161 Bug 1759169 - [remote] Initialize the Remote Agent before the first top-level window has been opened. r=webdriver-reviewers,geckoview-reviewers,jdescottes,agi,mossop
Differential Revision: https://phabricator.services.mozilla.com/D143380
2022-04-25 17:20:43 +00:00
Emilio Cobos Álvarez
e26a90f061 Bug 1764157 - Make showPicker() for date/time/etc work on Android. r=agi
Differential Revision: https://phabricator.services.mozilla.com/D143584
2022-04-23 10:23:16 +00:00
Eitan Isaacson
0303e6facd Bug 1765653 - Test tree structure in a11y iframe tree tests. r=Jamie,geckoview-reviewers,owlish
Differential Revision: https://phabricator.services.mozilla.com/D144236
2022-04-22 18:32:24 +00:00
Makoto Kato
d65219d10b Bug 1765072 - Use original reason member to handle Magnifying glass. r=geckoview-reviewers,agi
This is simple mistake. I should use original aEvent.reason to handle
magnifying glass instead.

Differential Revision: https://phabricator.services.mozilla.com/D143897
2022-04-19 02:57:06 +00:00
Makoto Kato
e464c056d3 Bug 1765121 - Add GeckoBundle.getRectF. r=geckoview-reviewers,agi
Since I would like to pass CSS client rect in bug 1510450 etc, I would like to
add `GeckoBundle.getRectF` and use it.

Differential Revision: https://phabricator.services.mozilla.com/D143898
2022-04-19 02:41:02 +00:00
Jamie Nicol
9849a83f64 Bug 1762424 - Provide SurfaceControl to compositor and render in to child Surface. r=agi,gfx-reviewers,geckoview-reviewers,jrmuizel,owlish
This adds new version of the GeckoView API
GeckoDisplay.surfaceChanged(), which takes a single argument of a new
type GeckoDisplay.SurfaceInfo. As well as containing fields for each
the the existing surfaceChanged() arguments, this has an additional
SurfaceControl field. This must be provided when rendering in to a
SurfaceView on SDK level 29 or greater. On earlier SDK levels, or when
rendering in to a TextureView or SurfaceTexture, this can be
null. SurfaceViewWrapper and GeckoView classes are updated to handle
this correctly. The old surfaceChanged() methods have been deprecated,
and tests have been updated to use the new version.

When provided, the SurfaceControl is passed along with the Surface
through to the widget and, when enabled, over to the GPU process. The
compositor widget then creates a child Surface from that
SurfaceControl, and renders in to that child Surface rather than the
parent one.

This works around a bug on Android 12 where following the GPU process
dying the Surface was left in an unusable state, meaning subsequent
attempts to initialize a compositor would fail. Because the Surface is
now created by the GPU process it gets destroyed when the process
dies, therefore a new Surface can successfully be created when we
reinitialize the compositor.

Differential Revision: https://phabricator.services.mozilla.com/D143485
2022-04-18 18:11:07 +00:00
Jamie Nicol
366dbce5af Bug 1762424 - Generate SDK bindings for android.view.SurfaceControl. r=agi
And android.view.SurfaceControl$Transaction.

In order to generate these bindings we must increase the maximum SDK
version argument we pass to SDKProcessor to 29. However, doing so
means that we now attempt to generate bindings for both Surface's
Surface(SurfaceTexture) and Surface(SurfaceControl)
constructors. These both translate in to C++ functions with identical
signatures - Surface::New(jni::Object::Param) - causing a compilation
failure.

This patch therefore also allows the stubName property to override
constructor names, and overrides the latter to
Surface::FromSurfaceControl(), thereby avoiding the conflict.

Differential Revision: https://phabricator.services.mozilla.com/D143484
2022-04-18 18:11:07 +00:00
Rob Wu
cda568340e Bug 1764566 - Update API availability in MV3 r=mixedpuppy
- Remove unsupported tabs API definitions that are gone in MV3.
- Mark content script APIs (superseded by scripting APIs) as MV2-only.
- Re-enable extension.getBackgroundPage in MV2 since it makes sense with
  event pages, and we enabled runtime.getBackgroundPage in bug 1759308.
- Add tests that verify API availability in MV3.

Differential Revision: https://phabricator.services.mozilla.com/D143721
2022-04-17 16:43:50 +00:00
Dimi
9887ecb7a4 Bug 1763805 - Convert cc-exp-month and cc-exp-year to string before passing to GeckoView r=sgalich,tgiles,geckoview-reviewers,agi
GeckoView expects string for "cc-exp-month" and "cc-exp-year", however, the `createNormalizedRecord`
method added in bug 1760834 while submitting a cc form, might change the value from string to number.

Differential Revision: https://phabricator.services.mozilla.com/D143535
2022-04-14 19:02:06 +00:00
mleclair
707fb0dd64 Bug 1666226 - Add GeckoView APIs for starting and stopping the Gecko profiler r=geckoview-reviewers,mstange,agi
***

Differential Revision: https://phabricator.services.mozilla.com/D133404
2022-04-13 23:26:45 +00:00
Hiroyuki Ikezoe
64b87a50a6 Bug 1610815 - Implement new {small,large,dynamic} viewport units. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D143252
2022-04-12 04:06:38 +00:00
Hiroyuki Ikezoe
48dcc8e143 Bug 1734261 - Use NSCoordSaturatingAdd only for nsSize. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D143020
2022-04-11 23:11:36 +00:00
Makoto Kato
8abdcc7d3e Bug 1639087 - Add Magnifying glass support in GeckoView. r=geckoview-reviewers,agi,owlish
Android P+ supports magnify glass and Chrome already supports it.

When accessible caret events are fired for pressing or dragging it, we show
Android's magnifying glass.

Differential Revision: https://phabricator.services.mozilla.com/D137966
2022-04-08 05:11:49 +00:00
Jamie Nicol
cee8f98714 Bug 1763392 - Generate SDK bindings for nested Java classes as nested C++ classes. r=agi,media-playback-reviewers,bryce
For example, the SDK class android.media.MediaDrm$KeyStatus will now
be defined as MediaDrm::KeyStatus rather than just KeyStatus.

Not only does this avoid polluting the top-level namespace, but it
also avoids a bug where invalid type names were generated if the
nested class contains a method with a parameter or return of the outer
class' type.

Differential Revision: https://phabricator.services.mozilla.com/D143043
2022-04-07 11:12:20 +00:00
Olivia Hall
5337352bf0 Bug 1762543 - Race Condition When Dismissing a GeckoView Prompt in Marionette r=geckoview-reviewers,agi,webdriver-reviewers,whimboo
Added _dismissUi() to GeckoViewPrompter.jsm to send the request to
dismiss the prompt UI. Updated dismiss() to answer the callback to
close the prompt directly and seperatly dismiss the prompt UI.

Removed element_send_keys/user_prompts.py.ini and
tests/perform_actions/user_prompts.py.ini due to resolving the issue that
was causing failures.

Differential Revision: https://phabricator.services.mozilla.com/D142729
2022-04-06 13:08:03 +00:00
Kagami Sascha Rosylight
1409f37ca3 Bug 1703953 - Part 2: Apply mozilla/use-isInstance rules for .jsm files r=webdriver-reviewers,pip-reviewers,mhowell,Gijs,whimboo
This replaces all `instanceof` uses for DOM interfaces, since the operator in priviliged context works same as .isInstance().

Differential Revision: https://phabricator.services.mozilla.com/D141785
2022-04-06 11:57:57 +00:00
Agi Sferro
96e2850c86 Bug 1763022 - Remove deprecated APIs. r=calu
Differential Revision: https://phabricator.services.mozilla.com/D142902
2022-04-05 18:51:05 +00:00
Butkovits Atila
5efc37c22e Backed out changeset 25a2b9b2e120 (bug 1763022) for causing build bustages. CLOSED TREE 2022-04-05 19:15:59 +03:00
Agi Sferro
008fd9bc6b Bug 1763022 - Remove deprecated APIs. r=calu
Differential Revision: https://phabricator.services.mozilla.com/D142902
2022-04-05 15:52:03 +00:00
Tim Giles
d90a4a9341 Bug 1758369 - Ensure credit card number has no whitespaces or dashes before trying to match type. r=dimi,sgalich,geckoview-reviewers,agi
This fixes the cases where a website modifies the credit card number after it has been filled.

Differential Revision: https://phabricator.services.mozilla.com/D140858
2022-04-05 15:46:02 +00:00
Emilio Cobos Álvarez
a18fdda05d Bug 1762298 - GCC build bustage and reftest fixes.
MANUAL PUSH: Orange fix CLOSED TREE
2022-04-04 22:14:24 +02:00
Cathy Lu
b5b91ffc69 Bug 1753700 - Add priorityHint to allow apps to increase process priority for background tabs r=geckoview-reviewers,mccr8,agi
Prior behavior for active tabs in an inactive app would have the process priority oom score of 15. Now it's set to a higher priority oom score of 11. This will increase priority for recently used tabs on apps and prevent Android from unloading them.

Differential Revision: https://phabricator.services.mozilla.com/D142386
2022-04-04 17:41:37 +00:00
Jesse Schwartzentruber
f9c193f69c Bug 1762278 - Fix Geckoview wrap.sh for debugging with API 29+ r=geckoview-reviewers,agi
Differential Revision: https://phabricator.services.mozilla.com/D142497
2022-03-30 22:24:18 +00:00
Ryan VanderMeulen
9e6651225a Backed out changeset d7b31fe38fc7 (bug 1758540) for causing Fenix UI test issues. 2022-03-30 13:40:04 -04:00
Eitan Isaacson
9ad7f135df Bug 1758540 - Pref on accessibility cache in Android. r=morgan
Differential Revision: https://phabricator.services.mozilla.com/D141638
2022-03-29 20:12:25 +00:00
Agi Sferro
5130041f1c Bug 1759893 - Implement Parcelable for WebNotification. r=jonalmeida
Apps want to persist a WebNotification so that they can respond to taps on it
when the app is not alive anymore.

To achive this, we make WebNotification serializable through Parcel so that the
app can store it somewhere.

Differential Revision: https://phabricator.services.mozilla.com/D141406
2022-03-29 16:37:41 +00:00
Agi Sferro
1115e11b14 Bug 1759588 - Allow passing a closed session in ServiceWorkerDelegate::onNewWindow. r=calu
This is an API weirdness. ServiceWorkerDelegate::onNewWindow requires a closed
session and NavigationDelegate::onNewSession requires an open session, even
though they pretty much do the same thing (and we do expect embedders to
implement them the same way).

This patch allows embedders to pass a closed session to onNewWindow so that
they can re-use the implementation of onNewSession.

Differential Revision: https://phabricator.services.mozilla.com/D141405
2022-03-29 16:36:50 +00:00
Agi Sferro
2bc0e3144e Bug 1761498 - Remove references to unused MOZ_DEBUG_WAIT_FOR_JAVA_DEBUGGER. r=owlish
Differential Revision: https://phabricator.services.mozilla.com/D142086
2022-03-29 15:21:21 +00:00
criss
4eec7e25a3 Backed out 3 changesets (bug 1703953) for causing multiple failures. CLOSED TREE
Backed out changeset 871a1fac289e (bug 1703953)
Backed out changeset 8151244bda18 (bug 1703953)
Backed out changeset eaf6d4c353be (bug 1703953)
2022-03-29 17:01:58 +03:00
Kagami Sascha Rosylight
c8f12f94dc Bug 1703953 - Part 2: Apply mozilla/use-isInstance rules for .jsm files r=webdriver-reviewers,pip-reviewers,mhowell,Gijs,whimboo
This replaces all `instanceof` uses for DOM interfaces, since the operator in priviliged context works same as .isInstance().

Differential Revision: https://phabricator.services.mozilla.com/D141785
2022-03-29 13:11:00 +00:00
Jesse Schwartzentruber
65cf67139e Bug 1686514 - Make GeckoView ASAN builds debuggable. r=agi,geckoview-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D142230
2022-03-28 19:15:00 +00:00
Olivia Hall
5404dba9a9 Bug 1712414 - GeckoView Prompts Adjustment for Marionette r=agi
Added prompts to geckoview.js window to collect active prompts using the added
GeckoViewPrompterChild and GeckoViewPrompterParent.
Added a way to get and set the prompt message text, callback, and
accept prompt(), confirm(), and alert().

Changed confirm-different-origin-frame.sub.html.ini and
prompt-different-origin-frame.sub.html.ini to expect ERROR on
Android because the prior GeckoView test runner was dismissing or
canceling prompts automatically due to not having a prompt delegate.

Differential Revision: https://phabricator.services.mozilla.com/D133927
2022-03-28 13:12:24 +00:00
Makoto Kato
9f9179d4e9 Bug 1761176 - Set insertion marker location for IME. r=geckoview-reviewers,agi
When using Android with physical keyboard, IME's candidate window is sometimes
misplaced. Some IME/keyboards require insertion marker location to set IME's
candidate window position.

So we should set it from caret rectangle.

Differential Revision: https://phabricator.services.mozilla.com/D141931
2022-03-28 05:29:21 +00:00
Luca Greco
38f2ef548f Bug 1748546 - Add missing browserActionFor definition in GeckoView ext-browserAction.js module. r=robwu,geckoview-reviewers,agi
The GeckoView ext-browserAction.js and ext-pageAction.js seems to not be fully providing
the browserActionFor/pageActionFor internal global helpers that their Desktop counterparts
are defining.

Technically this shouldn't be triggering any issue at the moment, because at the moment
it seems only used for the commands API (and also internally by the menu API apparently),
which are both not currently provided in GeckoView builds.

Anyway, it seems that they were still intented to be provided, because browserAction
does have it but incomplete version (whereas pageAction none at all).

It may be reasonable to move this in its own separate bugzilla issue, but in the meantime
I wanted to be sure to don't forget about it and so I'm attaching as a separate patch
in this set of changes for the two browserAction/pageAction APIs.

Depends on D141664

Differential Revision: https://phabricator.services.mozilla.com/D141666
2022-03-25 20:38:37 +00:00
Luca Greco
33f6843dbd Bug 1748546 - Add support for persistent events to ext-pageAction.js. r=mixedpuppy
Depends on D139786

Differential Revision: https://phabricator.services.mozilla.com/D141664
2022-03-25 20:38:36 +00:00
Luca Greco
a8452b1a7b Bug 1748546 - Add support for persistent events to ext-browserAction.js. r=mixedpuppy
Depends on D141663

Differential Revision: https://phabricator.services.mozilla.com/D139786
2022-03-25 20:38:36 +00:00
Iulian Moraru
3f782c2587 Merge autoland to mozilla-central. a=merge 2022-03-24 23:53:10 +02:00
Ryan VanderMeulen
106476ec17 Backed out changeset f4f7fa5023f3 (bug 1758540) for causing Fenix topcrashes and breaking UI tests. 2022-03-24 14:45:43 -04:00
Eemeli Aro
1d40396fe4 Bug 1732151 - Remove unused vendorShortName from brand.properties and brand.dtd. r=flod
At this point, no code in mozilla-central references these.
In comms-central, the string is still used, but provided there
by local brand.properties and brand.dtd files.

Depends on D141860

Differential Revision: https://phabricator.services.mozilla.com/D141861
2022-03-24 15:57:54 +00:00
mleclair
cb0a86aae4 Bug 1666226 - Add GeckoView APIs for starting and stopping the Gecko profiler r=geckoview-reviewers,mstange,agi
***

Differential Revision: https://phabricator.services.mozilla.com/D133404
2022-03-23 20:05:07 +00:00
Butkovits Atila
2c7e868cb3 Backed out changeset bec32662266a (bug 1666226) for causing Android bustages. CLOSED TREE 2022-03-23 21:14:51 +02:00