This mounts the downloaded DMG and copies a subset of the libraries
into the correct places in the processed archive. They'll be
installed, with paths, into dist/bin from there.
There is one review comment questioning a change that, upon testing, seems to
be necessary upon testing - I didn't make any changes for that change but I
still don't entirely understand why it's necessary.
When nsWindow closes, notify GLController to shut down. To ensure any
pending calls on the UI thread are processed first, post a Runnable to
the UI thread that disposes the GLController on the UI thread.
To guarantee that GeckoInputConnection and GeckoEditable are not used by
GeckoView after GeckoEditable has been destroyed, we need to make sure a
certain sequence is followed. We should first unset the
InputConnectionListener in GeckoView on the UI thread; then unset the
GeckoEditableListener on the IC thread; and finally finish destroying
the GeckoEditable instance through disposeNative. This patch merges this
logic with the initialization logic in GeckoEditable.onViewChange, so
that onViewChange can be used for both initialization and destruction.
Handle all text change scenarios efficiently but correctly. In
particular, when we have a pending "replace text" action, make sure we
preserve old and new spans as much as we can, and make sure we merge the
text from the pending action with the actual changed text.
Use an Activity as the Context when we have one. This avoids the crash
and also avoids an ugly black flash when you cancel the intent chooser.
When we don't have an activity, use an application context and add the
new task flag.
LayerView used to call GeckoLayerClient.onGeckoReady directly if Gecko
is sufficiently loaded. However, onGeckoReady indirectly calls
GLController.createCompositor, and it's possible for the
createCompositor event to be prioritized so that it happens before we
initialize GLController, causing a crash. This patch moves the
onGeckoReady call to the Gecko thread, after GLController is
initialized, to avoid this race condition.
GeckoThread.queueNativeCallLocked tries to execute a queued native call
if it's already overdue, but it incorrectly checked that the queue is
not empty. That check is not necessary, and an overdue native call
should always be executed. One-line patch, r=me.
This allows to run |mach artifact install| immediately after |mach
configure| and not have a subsequent |mach build| delete the files
that |mach artifact install| copied into dist/bin.
This patch changes onAttachedToWindow in GeckoView, so that if we have
states that have been restored, we use those states for initialization
instead of creating new states (e.g. opening a new nsWindow). Because
the GLController instance is associated with the nsWindow instance, we
need to keep the GLController instance as part of our saved states. This
patch also adds a reattach method to GeckoView.Window, because
GeckoEditable needs to be notified when its target View changes.
This patch adds an implementation of onSaveInstanceState and
onRestoreInstanceState to GeckoView, so that when GeckoView is destroyed
and later recreated, we would properly save and restore necessary states
and JNI associations. The patch also fixes onDetachedFromWindow, so that
we keep the nsWindow if we saved states, and close the nsWindow if we
did not save states.
As GeckoViews get destroyed and recreated, we want to carry its states
across. In particular, we want to keep a reference to our GLController
instance, and keep the association with the native nsWindow instance.
This patch makes GLContextProviderEGL create EGL surfaces through
nsWindow/nsIWidget on Android. nsWindow then calls GLController in Java
to actually create the surface.
GLController instances are associated with a particular nsWindow, rather
than a particular View. Therefore, we need to let GeckoView manage
GLController instances, as part of GeckoView's handling of saving and
restoring states.
One nsWindow will have one corresponding GLController, and using native
GLController methods instead of GeckoEvents lets us control the
compositor for each nsWindow separately.
GeckoViewSupport better reflects the purpose of the class and will match
the GLControllerSupport class that another patch is adding. This patch
also changes the way GeckoViewSupport is constructed in order to be more
encapsulating.
Right now, code that queues native calls through GeckoThread can
encounter a race condition, after the GeckoThread state changes but
before we flush the existing queued calls. In that case, the new call
will be made before existing queued calls are made, and the order of
calls is disrupted. This patch moves flushing existing calls to before
the state changes, to avoid this race condition.
Right now LayerView depends on geckoConnected being called by GeckoApp
or GeckoView during its initialization. However, we can get rid of it
and let LayerView handle the task itself. As part of this change, screen
depth overriding is moved to native code in nsAppShell.
This patch adds auto-generated bindings for LayerRenderer.Frame, and
uses the new bindings in nsWindow, in place of the old manual bindings
in AndroidJavaWrappers.
We already take care of this in AdjustConstants where we return
StubAdjustHelper if MOZ_INSTALL_TRACKING is not defined.
However, the one downside to this is that we touch SharedPreferences on the
main thread in onCreate even if Adjust is disabled. However, our release and
beta users already have this problem (since Adjust is enabled) so who cares if
our Nightly and Aurora users also have this problem.
This patch will prevent Firefox from downloading OMA download descriptors on
its own. Instead it will prompt to complete the action with an external app
if available. An error will be shown if no external app can handle the download.
CLOSED TREE
Backed out changeset 1cf6f364d319 (bug 1220309)
Backed out changeset f774157cf5f4 (bug 1220309)
Backed out changeset bd4581fe6c9d (bug 1220309)
I added these to BrowserApp to match the use of Adjust.onCreate in BrowserApp.
These sessions don't perfectly match the FHR sessions they replace which get
called in:
GeckoApp.onPause (session end)
BrowserHealthRecorder.onEnvironmentTransition (session end)
BrowserHealthRecorder.checkForOrphanSessions (session start)
- From BHR.initializeStorage <- BHR.handleMessage. I didn't figure out
where this message comes from but given "initializeStorage", I assume
this comes from a startup routine of GeckoApp.
However, the Adjust docs are explicit about adding these values to
onPause/onResume and presumably written under the assumption that those methods
are called in the appropriate places.
The docs also mention these calls should occur in all Activities but I followed
FHR where only the main Activity is logged - I don't predict any negative side
effects from this change.
AppCompat capitalizes all text in `Button`s so we have to override
that behavior to maintain the same UI. Ideally, we do this through
`android:buttonStyle` but the place I found the issue doesn't inherit
from that style so we can't and we change the style directly.
There may be issues with other `Button`s, but this is the only one I found.
DONTBUILD NPOTB
The top source directory configuration requires
mobile/android/gradle/m2repo/**, so it stays. There's no value
changing the location; it contains an Android-specific Gradle plugin.
We note the removal of |mach gradle-install| and point to the new
documentation.
There is no noticeable difference in background color of the menu on my 4.* GS4
or my 2.3 Nexus S, though perhaps it affects more than the menu.
The menu_panel_bg drawable is now unused so I removed that too.
This required us to use the menu button to open the menu and check
if the menu is open by looking at more menu items due to intermittent
issues where the menu would not always be scrolled to the top (I
think Robotium scrolled the menu before it finished appearing so
we couldn't see the first item and failed the isOpen test).
We added some Asserts but the robocop tests fail for an unknown reason. The
error was:
E/MessageQueue-JNI( 1972): java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
I tried a few things but in the end just decided to remove them.
This required us to use the custom menu inflater and panels on GB.
One side effect of this change is that the menu button no longer
closes the menu on GB. I tried to fix this but BrowserApp.onKeyDown
is not fired when the menu is open on GB and I'm not sure why that
is. However, I don't think it's worth my time to fix since it's GB.
We send query text events when flushing IME changes, and sometimes these
events make Gecko commit more pending changes. In that case, we should
try flushing again, so we pick up the new changes.
This patch also makes the process of flushing text changes
transactional, so that if we have to bail due to more pending changes,
nothing will be committed.
This patch adds a test for triggering re-flushing IME changes to
testInputConnection, by ending a composition followed by setting the
value of the input field.
A test for this bug requires the Robocop test call some JS functions.
This patch gives testInputConnection the ability to make calls to
content JS. It also converts the existing tests to use JS instead of
using previous workarounds (e.g. using URL hash to set the initial text,
using tab key to change input focus).
We send query text events when flushing IME changes, and sometimes these
events make Gecko commit more pending changes. In that case, we should
try flushing again, so we pick up the new changes.
This patch also makes the process of flushing text changes
transactional, so that if we have to bail due to more pending changes,
nothing will be committed.
This patch adds a test for triggering re-flushing IME changes to
testInputConnection, by ending a composition followed by setting the
value of the input field.
A test for this bug requires the Robocop test call some JS functions.
This patch gives testInputConnection the ability to make calls to
content JS. It also converts the existing tests to use JS instead of
using previous workarounds (e.g. using URL hash to set the initial text,
using tab key to change input focus).
There is no noticeable difference in background color of the menu on my 4.* GS4
or my 2.3 Nexus S, though perhaps it affects more than the menu.
The menu_panel_bg drawable is now unused so I removed that too.
This patch introduces a background service for downloading content from a
catalog (bug 1200291). This catalog ships with the application and contains
only fonts in this first version (MOZ_ANDROID_EXCLUDE_FONTS).
For now this service is disabled by default (MOZ_ANDROID_DOWNLOAD_CONTENT_SERVICE).
We don't expect to access any providers cross-package. (At one time
the android-sync repository did, but those days are long past.) Not
exporting these content providers may also avoid some bugs we've seen
that look like content providers from Aurora being loaded into
Nightly's process or vice versa.
This patch does two things. First, PasswordsProvider may not be able
to dispatch to the GeckoThread directly, so we stop trying to do that
directly and just triangulate through the receiver, which will
dispatch from the main process. Second, we don't want to export this
receiver, so this patch replaces the signature-level protection
mechanism with the component's explicit package and name.
I'm reluctant to mass-delete strings, since that could cause our l10n
team some grief in the event of a rollback. And it's not obviously
easy to get them all back smoothly. I'll delete strings separately.
The web based Activity sub-classes never used the other intent extras,
and in fact, filter them out immediately; so it doesn't hurt to clean
this all up.
This required us to use the menu button to open the menu and check
if the menu is open by looking at more menu items due to intermittent
issues where the menu would not always be scrolled to the top (I
think Robotium scrolled the menu before it finished appearing so
we couldn't see the first item and failed the isOpen test).
We added some Asserts but the robocop tests fail for an unknown reason. The
error was:
E/MessageQueue-JNI( 1972): java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
I tried a few things but in the end just decided to remove them.
This required us to use the custom menu inflater and panels on GB.
One side effect of this change is that the menu button no longer
closes the menu on GB. I tried to fix this but BrowserApp.onKeyDown
is not fired when the menu is open on GB and I'm not sure why that
is. However, I don't think it's worth my time to fix since it's GB.
We're using the Theme.AppCompat styles so we have to extend AppCompatActivity.
It is a subclass of the previous class GeckoApp extended so we shouldn't run
into an ClassCastExceptions.
I tested the home panels, tabs tray, hyperlink long-press context menus,
door hangers, the 3-dot menu, and browser search to make sure there was no
change in UI appearance.
AppCompat capitalizes all text in `Button`s so we have to override
that behavior to maintain the same UI. Ideally, we do this through
`android:buttonStyle` but the place I found the issue doesn't inherit
from that style so we can't and we change the style directly.
There may be issues with other `Button`s, but this is the only one I found.
We're using the Theme.AppCompat styles so we have to extend AppCompatActivity.
It is a subclass of the previous class GeckoApp extended so we shouldn't run
into an ClassCastExceptions.
I tested the home panels, tabs tray, hyperlink long-press context menus,
door hangers, the 3-dot menu, and browser search to make sure there was no
change in UI appearance.