Moving speculative connection from CLH to GeckoApp allows us to start
the speculative connection very early in the startup process rather
than later in startup.
One thing we do in the Fennec CLH is to make a speculative connection
based on the URI that's passed in. However, by the time the CLH runs,
we're far along into startup, and the advantage of a speculative
connection is reduced. This patch implements making speculative
connection as a method in GeckoThread, so that Fennec can make a
speculative connection without relying on the Fennec CLH.
Many Gecko operations depend on the profile being available. This
patch adds a PROFILE_READY Gecko state so that we can queue calls
until profile is loaded.
Many calls are associated with a Gecko state when they become available.
For example, calls that only depend on XPCOM become available very early
in startup, at the JNI_READY state. However, calls that depend on JS
components may only be available at the end of startup, at the RUNNING
state.
This patch adds an available state to every queued call, so that calls
can be made as soon as they become available, which is important for
calls like making speculative connections.
This patch has a side effect of changing the color of the forward
button as it animates forward and back, but it's minimal enough
that I'm okay with it, and it cleans up disabled/private state color
management (particularly after the following patch).
Previously, it was available in MenuItemActionBar, which extends
ThemedImageButton.
Additionally, fix a bug about using android:tint when drawableTintList was not
used.
Currently, all versions of Firefox run with the existing native
Firefox Account UI. This flag will opt-in to maintaining that
experience while we transition to a web account UI. Once we're stable
on the web, we'll remove this flag entirely.
DONTBUILD NPOTB
This means we don't require the directory in the object directory at
gradle-install time. We're not concerned if the resource files are
missing, since we have code to ensure they're fresh already; and if
they are missing, we'll quickly fail as we try to process the resource
set.
This means we don't require the directory in the object directory at
gradle-install time. We're not concerned if the source files are
missing, since we have code to ensure they're fresh already; and if
they are missing, we'll quickly fail as we try to compile with missing
sources.
This allows us to not require dist/fennec/* to exist in the object
directory at gradle-install time. It gets us one small step closer to
being able to sit down to a fresh source tree and open a Fennec
project in IntelliJ.
This was just an oversight. The Gradle configuration referenced
topsrcdir rather than having a symlink via the objdir. This didn't
impact the Gradle build, but it did make the preprocessed_code Gradle
project appear outside of the root Gradle project in IntelliJ.
We could remove tablet_* and move these values to the values-large
configuration but it's scope creeping for not much gain. The
attributes are prepended with tablet_* so they should be easy to
fix in the future should we choose to.
Refactoring automated w/ Intellij.