Commit Graph

609 Commits

Author SHA1 Message Date
Sunny Goyal 116d34bc63 Preventing a shortcut which requires permissions from being added to
homescreen

A shortcut can be added by any app as INSTALL_SHORTCUT is a normal
level permission. But the intent is actually launched by the launcher
app which can have other permission as well.

> When adding a shortcut from the broadcast, verify that the intent does
not require any permission
> When adding a shortcut using the two-step drop process, verify that
the source app also has the permission to create such a shortcut

Bug: 30778130
Change-Id: I33a391bc0af81248aaff4459aaa79d1adc77926b
(cherry picked from commit fb5096d07b)
2016-09-21 20:12:20 +00:00
Sunny Goyal 65ffa15c90 Adding null check when widget provider changed is received as it can come
after the activity is destroyed.

Bug: 28791862
Change-Id: I521931b772a611e15f0757db72b441ebb937e262
2016-06-01 14:29:25 -07:00
Sunny Goyal d2a6ed36a2 Disabling stricty mode checks when launching an activity.
The default strict mode policy in NYC cause death penalty when
when sharing file URI in intent. This causes launcher to crash
for users who have shortcuts of images and documents on their
homescreen.

Bug: 28853579
Change-Id: If84cd5ff732713aaff5d3164edf428c8b4233ea2
(cherry picked from commit 85fc55a976)
2016-05-31 20:46:23 +00:00
Sunny Goyal d6e208b035 Adding overlay interaction support
> Sending unboundX to the overlay which is the total untranslated X and not just deltaX from last frame
> Handling overlay callback and translating workspace accordingly

Change-Id: I3bd8d9efac738e9ce131758f0e5ff1b9c1d6a8fc
2016-05-11 15:30:27 -07:00
Sunny Goyal 4ec7134a77 Cleaning up the overlay interface
Overlays are supposed to use their own UI and not interfere with the
Launcher UI. If the UI needs to be put inside the Launcher, use customContent
instead.

Removing some unnecessary and unused methods related to overlays

Bug: 25993953
Change-Id: I4d715cdee04eb7b0ebef673d885a4258c521ff1f
2016-05-11 11:44:28 -07:00
Hyunyoung Song d419681a1c Fix home button returning to now screen issue
b/27978139

Background: onSaveInstanceState assumes that state of the launcher
is being stored after screen is all binded. However, due to ActivityStack
bug in nyc, onCreate is called twice when the device is rotated while
the Launcher is in the background. The first onCreate fails because
our AndroidManifest is setup with nosensor field and hence doesn't support
Landscape. During this first onCreate, screen is not correctly bound
and incomplete workspace state is saved. This results in the second onCreate
to load wrong screen id.

Fix: While the workspace is still being bound, mSaveState is not reset,
which has the correct values. SaveInstance should use this state
instead of incomplete workspace state.

Change-Id: I5b80f584e55769b2a8ffa292f5daa4705c20086d
2016-05-09 18:35:55 -07:00
Tony Wickham 8dd2409923 Return 1f in Log(Ac/De)celerateInterpolators on a 1f input.
In battery saver mode, animations skip directly to the final values.
For LogDecelerateInterpolator, however, an input of 1f outputs an
interpolated 0.99999994. This meant that the FirstFrameAnimatorHelper
didn't realize that this was the last frame, and messed things up.
Since any interpolator should return 1 on an input of 1, we just
short-circuit in that case for the log interpolators.

Bug: 25666809
Change-Id: I60527e3758cea383fbcf50acb95460a7bd9ab43c
2016-05-03 17:00:20 -07:00
Sunny Goyal 0042e3a5e7 Revert "Calling start/stop listening in onStart/onStop"
This reverts commit 23ac9cb3e1.

Bug: 28421447
Change-Id: Id04e7b7827d8b897b7c7992705d36f9d83a13320
(cherry picked from commit 7e5d5fc3c6)
2016-04-28 22:43:19 +00:00
Sunny Goyal e81ba18a03 Setting stable layout flags on the launcher, so that the instets do not
change for launcher when going in/out of another app

Bug: 27600678
Change-Id: Ic873faba99c539025769d911bc7b0a4fed629cd7
(cherry picked from commit 784f9c3996)
2016-04-27 17:20:24 +00:00
Sunny Goyal 2afb636180 Showing a toast when changing wallaper is disabled
Bug: 27940102
Change-Id: I373093d9b85dca356aaa8798931d5315981fd74c
2016-04-21 15:16:42 -07:00
Sunny Goyal 96b6ed77a4 Calling start/stop listening in onStart/onStop
AppWidgetHost in N was changed to make start/stop lisenting calls
light weight, which allows launcher to avoid getting unnecessary
updates when its not visible

Bug: 23892701
Change-Id: I0ca6e02400992bc4e0359e45a3d66b9252751402
(cherry picked from commit 23ac9cb3e1)
2016-04-08 22:34:02 +00:00
Sunny Goyal 97909124a2 Fixing model being updated on UI thread
> When package gets unavailable or suspended, the disabled flag was getting
updated on the UI thread. This could lead to inconsistent model if launcher
activity didn't exist.
> Fixing: When unsuspending one work profile apps, all work profile apps get
unsuspended

Bug: 27673573,27673373,27403236
Change-Id: I7fde3f79c36204e73ca66ccf8431fa0f0cce3d08

Conflicts:
	src/com/android/launcher3/DragController.java
2016-04-07 15:54:52 -07:00
Sunny Goyal 1024a80f2c Changing the widget loading strategy
Widget is loaded only when the user enters the overview mode and we keep
the list updated as long as the user is in the overview mode. Once the user
leaves the overview mode, we stop responding to widget updates

Bug: 26077457
Change-Id: I9e4904b8f1300bfe0d77e2bc5f59aa6963fad8d1
2016-04-07 15:44:04 -07:00
Sunny Goyal 58b53b5dff Preserving the homescreen rotation setting on a tablet, when the display is scaled
Bug: 27040652
Change-Id: I07f5e02443379ac5b877f72d33cedf4f2feca926

Conflicts:
	src/com/android/launcher3/Utilities.java
2016-04-07 15:30:35 -07:00
Kenny Guy e0b655e845 Respond to managed profile availabilty Intents.
Grey out applications when managed profile is
not available.

Change-Id: I9bb9442cd0b3d0d207062716bfd6b179e3ba8489
(cherry picked from commit ff05f4375d)
2016-04-07 19:41:52 +00:00
Kenny Guy 82fdb81d63 Grey out suspended applications.
Grey out application shortcuts and all apps entries
for packages that are suspended.

Bug: 22776761
Change-Id: I1b63da1816aca1de52b9f9bee62d1b162d0cdf4d
(cherry picked from commit 44cba69638)
2016-04-07 19:39:58 +00:00
Sunny Goyal c42ac0a5a6 Removing LauncherCallbacks control over app search
Change-Id: Icb199607dea3f169055e44946272aa9f1e758d1d
2016-02-18 15:32:27 -08:00
Sunny Goyal 2953833bcb Adding a utility method to iterate over folder contents
Change-Id: I9f17ade7dc06819587290387b811d828da57b2fb
2016-02-18 09:10:19 -08:00
Sunny Goyal 3826bab27e Merge "Merging search bar with all apps" into ub-launcher3-burnaby-polish 2016-02-10 19:18:13 +00:00
Sunny Goyal 0ac7ede56a Merging search bar with all apps
Change-Id: I78577124cd3c05d52669c3e52b0294d6eb1d194d
2016-02-08 14:55:22 -08:00
Hyunyoung Song a27d7a5a19 Add more debugging info when Launcher deletes widget from homescreen.
b/26219491

Change-Id: I5899cafa8d78e5e64a4ec1495ebf62ebc55ea8f5
(cherry picked from commit 70264a9717)
2016-02-04 01:23:25 +00:00
Sunny Goyal ffa1237698 Merge "Using SharedPrefenrece.apply instead of commit to prevent disk IO on main thread" into ub-launcher3-burnaby-polish 2015-12-18 22:38:52 +00:00
Sunny Goyal b740f59c7d Fixing some invalid checks and cleaning some redundant conditions
Change-Id: I770ce2cc2eccbee105958634e81bbc9bc2e4cc48
2015-12-18 11:00:14 -08:00
Sunny Goyal d804398755 Using SharedPrefenrece.apply instead of commit to prevent disk IO on main thread
Bug: 25903149
Change-Id: Ib1ee3fd27cca14f147f704aec768a330c4f03b33
2015-12-17 22:24:51 -08:00
Sunny Goyal 655daaed3e Recreating QSB when the widget host gets reset
Bug: 25073414
Change-Id: Ibdaa2b330ef7989cb7c93d64a05c8f6e5b26594a
2015-12-08 09:29:03 -08:00
Tony Wickham a501d49a6a Add appropriate (tiny) offset to widget drops so they land correctly.
Also removed some unused parameters I found on the way.

Bug: 25191623
Change-Id: Ib9a30db106467c114cc8b54a5b13ed3e88162d56
2015-12-03 11:54:13 -08:00
Sunny Goyal d007d0722c Merge "Allowing widgets to be focusable" into ub-launcher3-burnaby-polish 2015-11-25 18:10:56 +00:00
Tony Wickham 6e83dc4031 Merge "Skip to the end of the folder open animation in battery saver mode." into ub-launcher3-burnaby-polish 2015-11-25 00:02:12 +00:00
Sunny Goyal 7bce5f7988 Tying LauncherAppState lifecycle with LauncherProvider
The content provider is the first component started with the main process,
which makes it ideal for initiating LauncherAppState

Change-Id: I03db82a8949ad1376af53a0033592f421dbf0b15
2015-11-24 12:06:42 -08:00
Sunny Goyal 4ee66259eb Merge "Setting statusbar and nav bar colors in theme instead of code" into ub-launcher3-burnaby-polish 2015-11-23 18:45:41 +00:00
Tony Wickham 30bdd6eb69 Stop requesting focus on folder if it was closed without animating.
Bug: 25092436
Change-Id: Ia6b72ec8c9fa02fc159457b81fef12f6fd394769
2015-11-18 02:08:22 +00:00
Tony Wickham 112ac95571 Skip to the end of the folder open animation in battery saver mode.
Bug: 25666809
Change-Id: I867d56a34fc5e0ad6aaabd8b6df47be05ec31966
2015-11-12 12:51:06 -08:00
Sunny Goyal 25c2e3ef07 Allowing widgets to be focusable
> Pressing 'enter' enters the focus inside the widget.
> If the widget has only one focusable, it directly performs click
> Pressing 'esc' brings the focus back to the parent host.

Bug: 25199581
Change-Id: Ia7fd5d929f5945d61173abd349660a5efbe74afc
2015-10-30 10:03:45 -07:00
Tony Wickham a3c74d10a7 Setting correct height for search bar widget options bundle.
- Seperate search bar height from its top and bottom paddings
- Report this height plus 8dps top and bottom for the widget options
- Use a separate bottom padding to adjust spacing between QSB and
  the workspace
- Add tests to verify the height of the search bar in both normal and
  tall modes (ran on Nexus 6, 7, and 10)
Change-Id: Ia7557785d1b38194eee869d0460456e8f33447d5
2015-10-29 12:18:28 -07:00
Sunny Goyal 097db343a4 Setting statusbar and nav bar colors in theme instead of code
Change-Id: I4da50809d14f5fa4e47df47fcfd99df7b713950d
2015-10-28 14:30:01 -07:00
Tony Wickham c3d76582b6 Merge "Add null check in Launcher onNewIntent() before moveToDefaultScreen()." into ub-launcher3-burnaby-polish 2015-10-27 01:02:26 +00:00
Tony c1739096b4 Add null check in Launcher onNewIntent() before moveToDefaultScreen().
There is a race condition that occurs primarily (maybe entirely) with
Android Auto, it seems because they hijack the Home intent or something
similar. I'm not exactly sure how Android Auto works, but if I pair my
phone with the Desktop Head Unit (car dashboard emulator), I can repro
the NPE fairly easily by simply force closing Android Auto and then
disconnecting my phone from the DHU. If I don't force close Android
Auto, then pressing home launches Android Auto or other apps that I
assume handle some custom intent, such as Car Home Ultra, instead of
normal Home intents such as Launcher3/Google Now Launcher. So I think
what's happening is that, when the phone is disconnected from the car,
Android Auto restores and launches the real home intent (Launcher 3)
around the same time that it destroys the previous home intent
(Android Auto, Car Home Ultra, etc.). This could cause the NPE if both
intents are actually Launcher 3, as is the case when Android Auto is
already closed, because mWorkspace is set to null in
Launcher#onDestroy() (something like onNewIntent() --> post() called
--> onDestroy() --> post() runs). This is consistent with the fact
that I can guarantee a repro if I use postDelayed() instead of post().

Long-winded explanation aside, I think this fix is safe, especially
since we already have a null check for mWorkspace in onNewIntent(),
just not inside the post().

Bug: 24610231

Change-Id: I42f75b83946f375d947be1961a1f2a03a3707a84
2015-10-26 01:31:53 +00:00
Tony Wickham 52040c2d51 Merge "Set search bar height before setting up views in Launcher." into ub-launcher3-burnaby-polish 2015-10-23 18:38:46 +00:00
Sunny Goyal 935fca1857 Do not animate folder when it is closed while changing activity state
Bug: 21733536
Change-Id: I36aa3041b9300c917e320b511e00a1721e44f854
2015-10-21 13:42:36 -07:00
Tony Wickham eef443248a Set search bar height before setting up views in Launcher.
This ensures that the QSB widget options are set correctly the first
time they are used.

Bug: 24704753
Change-Id: I2bb13ff012b6f13ca076deed61f0b08a7037e2fa
2015-10-21 12:20:31 -07:00
Sunny Goyal f725824fa2 Refactoring getPreferenceKey method
This method was returnning a constant and getting inlined by proguard.

Change-Id: I87348e25b21483adc1b27d16f99dec4b73205701
2015-10-20 09:41:04 -07:00
Tony Wickham f79d347a61 Add LauncherCallbacks method to add additional search widget options.
am: 775455c4a8

* commit '775455c4a8266655bf43b943e969d42ac32609ec':
  Add LauncherCallbacks method to add additional search widget options.
2015-10-16 20:40:34 +00:00
Tony Wickham 775455c4a8 Add LauncherCallbacks method to add additional search widget options.
Bug: 25000458
Change-Id: I5e8d48617568569bc6e4f284749c3ed9fb20a68f
2015-10-16 10:15:36 -07:00
Tony Wickham a8709ddbbf Merge "Fix "The specified child already has a parent" IllegalStateException." into ub-launcher3-burnaby-polish 2015-10-15 18:00:59 +00:00
Tony Wickham a0628cc521 Fix "The specified child already has a parent" IllegalStateException.
The problem was due to a race condition between removing a prebound
widget view from the drag layer and adding the same view to the
workspace upon dropping it; if you let go of the widget immediately
after picking it up, the latter happened before the former.

Specifically, the flow was: long-click a widget --> drop --> remove
the view from the drag layer if it's not null (it is, so nothing
happens) --> the view is finally bound/inflated and added to the drag
layer --> add the view to the workspace --> already has a parent.

There are actually 2 problems here: one is that the bind/inflate is
asynchronous, and can therefore happen after dropping the widget view
being inflated, and the other is that the view is added to the
workspace even though the transition has barely started (we usually
ignore drops if the transition is less than half complete). It turns
out that this second problem was also due to a race condition, this
time between dropping a widget or app onto the workspace and calling
LauncherStateTransitionAnimation.dispatchOnLauncherTransitionStart().
If the drop happened before the dispatch, as in the case of the
crash, then the drop was accepted because the transition progress was
still 1.0 from the previous transition.

I fixed the first problem by removing the drag layer widget view
in Launcher where it is potentially used instead of Workspace. And I
fixed the second problem by setting mTransitionProgress to 0 in
Workspace.onLauncherTransitionPrepare().

I also added some debugging logs.

Bug: 23896857
Change-Id: I66944e6d3f23b70dea15f7fb01af0763a1bfcbda
2015-10-15 10:07:06 -07:00
Sunny Goyal 44b48f7702 am 28c6b963: Showing a permission prompt for direct call shortcuts
* commit '28c6b963d4ccac73ab857c839420513dd560945c':
  Showing a permission prompt for direct call shortcuts
2015-10-14 19:16:24 +00:00
Winson e9f2727385 Fixing issue with overview panel buttons.
Bug: 22699895
Change-Id: I8a2f05a6008343327e34cbd3169e4056729e0b75
2015-10-13 13:56:29 -07:00
Sunny Goyal 28c6b963d4 Showing a permission prompt for direct call shortcuts
Bug: 24580949
Change-Id: Idc92f9f5979a730f43b4905af2bc47b6834dc7a7
2015-10-12 11:46:01 -07:00
Tony Wickham f685c7e5f7 Merge "Actually call LauncherTransitionable.onLauncherTransitionStep()." into ub-launcher3-burnaby-polish 2015-10-09 22:37:02 +00:00
Tony Wickham fa3c369cc3 am 37860923: Merge "Added launcher callback to specify search bar height." into ub-launcher3-burnaby
* commit '37860923619b1e467975a74764dff03ab657bdc7':
  Added launcher callback to specify search bar height.
2015-10-09 01:40:31 +00:00