Commit Graph

174 Commits

Author SHA1 Message Date
Kweku Adams
3ff32e0892 Merge "Move heap dump sharing to SHELL." am: c29b5cba29 am: 2cdf2d5ad7
am: 215d92f880

Change-Id: Ic092f2d5c0c0a1497c19e73417c68b8e8616cc63
2019-10-30 21:15:56 -07:00
Kweku Adams
4d345d7af1 Move heap dump sharing to SHELL.
The system shouldn't be granting read URI permissions as itself. This
means that heap dumps aren't successfully shared. Moving the heap dump
sharing mechanism to SHELL, which already has the permission to dump
heaps so that dumps can be shared properly.

The ActivityManagerService changes are submitted separately.

Bug: 126885951
Bug: 135150619
Test: collect a heap dump and confirm it's successfully shared with an app
Test: do manual test on a secondary user & confirm it's not available to
other user

Change-Id: I6fad69280b5124c8ec2d3b4bef0f7dddb6a9422c
2019-10-29 15:17:42 -07:00
Abhijeet Kaur
72be2e113e Remove unused broadcasts/functions/variables from Shell
Bugreport is now triggered using API and not via broadcasts from
dumpstate. As migration to API flow is stable, we can remove methods and
broadcasts that were used in non-API bugreport flow. Now, callbacks are used
for communication between dumpsate and Shell instead of broadcasts.

* Remove BugreportReceiver.java as it used to handle BUGREPORT_STARTED and
  BUGREPORT_FINISHED intents which are not required by Shell anymore to
  track bugreports.
* Remove RemoteBugreportReceiver.java as it used to handle
  REMOTE_BUGREPORT_FINISHED intent which is not required by Shell
  anymore.
* Remove methods that were being used when processing these broadcasts.
* Remove pid as that is not used anymore.
* Since Shell owns the file now, don't need mTempName, mSavedName,
  onFocusListener and disable file name after the bugreport is finished.
  File name can be sanitized and updated even after bugreport finished.

Bug: 136066578
Test: Build and flash. Interactive/Full bugreports from Settings/Power button.
Test: Rename workflow for interactive bugreports works as expected.
Test: * Build and flash
      * Install TestDPC
      * Make it device owner
      * Take a remote bugreport. Works as expected

Change-Id: I5e0f829631cb63074c41c914236e78abe95ba162
2019-10-22 12:26:23 +01:00
Abhijeet Kaur
5735c6a247 Read screenshot file from screenshotFiles array
Regression from merge issue that was created when merging ag/9489200 and ag/9502526.

Previously, before saving the screenshot file in the array, it had to be
created each time it was required.

Bug: 123617758
Test: manual
Change-Id: I2dc2924aa20609d2445af00025580b2752935903
2019-10-10 16:29:54 +01:00
Abhijeet Kaur
451d9c9ace Add synchronized locks to bugreport callback methods
BugreportCallbackImpl class methods modify (read/write) the private
variable mInfo. Add synchronized locks for consistency.

Make other methods static to be thread-safe, and operate only on its
arguments.

Bug: 123617758
Test: Build and flash. Takes bugreport as expected
Change-Id: I237fd940f5ccd4833d053558cf1b014883d59791
2019-10-07 16:34:23 +01:00
Abhijeet Kaur
396a0acbdb Fix bugreport rename in API workflow
In the current implementation of API flow of bugreport, renaming bugreports
works fine but it changes the entire name. In legacy flow, the user is only
able to rename the suffix of the file. The prefix of the name
(bugreport-deviceName-buildID) remains unchanged. Also, wifi and
telephony bugreports have the type of the bugreport specified explicitly
in the name.

Fix Shell's rename implementation to follow legacy logic. Also stop setting
name property in the API flow since it's a functional no-op anyway, and we
want all communications to dumpstate be through the API when possible.

No need to call trackInfoWithId() for remote bugreports as Shell does not
process any notification related to it.

Bug: 123617758
Test: * Take interactive bugreport, rename and save. (work as expected)
Test: Corner case:
      * Take interactive bugreport, rename and save.
      * Click on the progress notification again and keep the edit box
        open.
      * Wait for bugreport to finish, filename edit box would be disabled
        and autofilled with last saved rename. You will still be able to
        edit title and summary. (works as expected)

Change-Id: I0016ef4fc1e80fb792712c45439e2b0d348f5249
2019-10-07 13:56:44 +01:00
Abhijeet Kaur
2f0ff57798 Merge "Handle legacy broadcasts from dumpstate logic in onFinished() callback" 2019-09-26 09:48:42 +00:00
Abhijeet Kaur
af9fbc3946 Handle legacy broadcasts from dumpstate logic in onFinished() callback
In legacy bugreport workflow dumpstate used to send BUGREPORT_STARTED,
BUGREPORT_FINISHED and REMOTE_BUGREPORT_FINISHED broadcasts.

BUGREPORT_FINISHED and REMOTE_BUGREPORT_FINISHED broadcasts contain
information about the bugreport file, this information is not with
dumpstate in the API WORKFLOW, and is passed to it by the API caller.

Hence these broadcasts need to be sent by the caller of the bugreport
API to share the bugreport file information in the onfinished() callback
function.

Send REMOTE_BUGREPORT_DISPATCH broadcast for DevicePolicyManager to
handle.

Add minimal information in these broadcasts. Not adding all fields that
dumpstate used to send, as most of those were used by Shell. Only
sending necessary fileds used by receivers of these broadcasts.

Handle clean up of old bugreports in onFinished() callback function

Bug: 137825297
Test: * Interactive/Full bugreports successfully created
      * Share notification appears as expected
      * Able to attach these to gmail
Test: * Trigger remote bugreport by hardcoding the value of remote
        bugreport when calling the API
      * Remote bugreport is created successfully
      * No share notification (same behavior as before)
      * Same logs in logcat as triggering remote bugreport using old flow:
          * adb shell setprop dumpstate.options bugreportremote
          * adb shell setprop ctl.start bugreport
Test: * TestDpc (go/testdpc):
          * Install TestDPC
          * Set it as Device Owner
      * Open TestDPC to trigger a remote bugreport ("Request bugreport")
      * Shows user consent for bugreport collection (indicating that the
        API workflow is triggered.
      * Once the collection is complete and you tap "Share" in the notification.
      * TestDPC shows another notification showing the received bugreport file
        path and hash.
      * Verify using adb shell to check if the bugreport file is present
        in the above specified file path
Change-Id: I07c0c64b74a723683601e53e3c68a374ca54f3cb
2019-09-24 16:42:29 +01:00
Dan Sandler
630f991cf2 Merge "Bugreport progress notification should use the bug icon." am: cb783ea2ee am: 704b11756a am: 777b2325be
am: 362e959c7d

Change-Id: I161186cbfef27ace50349d60b1726ef3ba6d1932
2019-09-18 12:16:32 -07:00
Dan Sandler
bc20d4e79f Bugreport progress notification should use the bug icon.
(Don't worry, stat_sys_adb isn't going away, but it will
only be used by the ADB notification now.)

Bug: 138661761
Test: initiate bugreport from globalactions
Change-Id: I238659d50f70bfbc047133d89afb76f78ec841f9
2019-09-12 23:11:36 -04:00
Abhijeet Kaur
725a25f7f5 Set up to migrate requestBugreport flavors to use bugreport API
Add initial set up code to migrate requestBugreport,
requestBugreportWithDescription, requestWifiBugreport and
requestTelephonyBugreport to use the new Bugreport API.

Prepare the intent (to trigger API workflow) but do not send. Not
sending the intent keeps the workflow same as before.

This set up helps to move away from directly setting system properties
(dumpstate.options.title and dumpstate.options.description).

Bug: 139415553
Test: build and flash. Taking a bugreport works as usual
Change-Id: I0b57643ff8f4eadb281e1d7788171ef751a01b79
2019-08-19 12:20:48 +01:00
Nandana Dutt
b745860a3e Merge "Remove obsolete methods from DumpstateListener implementations"
am: cbdb10f982

Change-Id: Ia746b0cdadd0c4d652c373763f7a12266b080e3b
2019-08-07 07:08:27 -07:00
Nandana Dutt
47c5ecc50a Remove obsolete methods from DumpstateListener implementations
Note that with the new Bugreporting API, SystemServer is the only
expected DumpstateListener implementation. Once we fully migrate Shell
app, we can remove the implementation in BugreportService as well.

BUG: 128980174
Test: bugreport from power menu, observe progress bar

Change-Id: I40d654a70bd9ceb3a29f8a0113b85616100f4ee9
Merged-In: I40d654a70bd9ceb3a29f8a0113b85616100f4ee9
2019-08-06 17:43:11 +00:00
Nandana Dutt
ecc40227b6 Merge "Remove obsolete methods from DumpstateListener implementations" 2019-08-06 16:21:34 +00:00
TreeHugger Robot
120820d66b Merge "Add logic to handle screenshot file creation failure" 2019-08-05 17:33:42 +00:00
Abhijeet Kaur
1b1d614e63 Add logic to handle screenshot file creation failure
Delete the bugreport file to free the space before returning.

Delete unnecessary if blocks as the File constructor would never return
null

Bug:123617758
Test: Force code to execute the if (screenshotFd == null) block.
      Bugreport file gets deleted successfully

Change-Id: Ib88278a8a56799ef562b8b06e5e530a8e31e85d5
2019-08-05 15:24:16 +01:00
Nandana Dutt
56659ae22f Remove obsolete methods from DumpstateListener implementations
Note that with the new Bugreporting API, SystemServer is the only
expected DumpstateListener implementation. Once we fully migrate Shell
app, we can remove the implementation in BugreportService as well.

BUG: 128980174
Test: bugreport from power menu, observe progress bar

Change-Id: I40d654a70bd9ceb3a29f8a0113b85616100f4ee9
2019-08-01 16:08:56 +01:00
TreeHugger Robot
9f3eb4a130 Merge "Leave error handling the same as old workflow using dumpstate" 2019-08-01 12:19:34 +00:00
Abhijeet Kaur
0d61c4f89d Leave error handling the same as old workflow using dumpstate
Removing the TODO as won't be working on improving error handling as
part of this bug. Created another bug (b/138576498) to work on better
error handling.

Bug: 123617758
Bug: 127431371
Test: builds (only removing comment)
Change-Id: I8a7fea416e9871909cfb3cc801232bff6056536e
2019-07-31 11:18:55 +01:00
Abhijeet Kaur
af0279c991 Merge "Make shell bugreport file names consistent with dumpstate" 2019-07-29 13:41:13 +00:00
Abhijeet Kaur
906b937b42 Make shell bugreport file names consistent with dumpstate
Since bugreport API workflow will be replacing old workflow of directly
starting dumpstate, we aim that the resulting file names be the same as
the users are used to the old file names (that dumpstate used to decide).

Bug:126862297
Test: * Build and flash to the device
      * Turn on Settings feature flag to use the bugreport API
      * Take interactive and full bugreports
      * Output file names same as before

Change-Id: I24d800e26a8cc4f739038ac0f27da13bd83f7f47
2019-07-29 10:54:32 +01:00
Abhijeet Kaur
ac834969a3 Set id for bugreports after dumpstate increments it.
dumpstate increments system property PROPERTY_LAST_ID when a bugreport
is triggered.

In the old workflow for bugreports, dumpstate used to get triggered
before Shell, and dumpstate would send the 'id' to Shell. Hence Shell
always assumed that it has a known value for 'id', that is why
'id' is declared as a final variable which could be assigned value in
the constructor.

In new workflow using API, the 'id' is incremented after dumpstate gets
triggered. Hence making the following changes:
* Changing 'id' variable to be not final
* Reading 'id' after dumpstate has incremented the system property

Bug: 123617758
Test:  	Build and flash to device.
	Turn on the feature flaggenerate bugreports
	Check the progress and Finish notifications.

Change-Id: I44762190391c128cba135bf0ef795a1ae872dbb7
2019-07-25 14:04:56 +01:00
TreeHugger Robot
deda6a1bd9 Merge "Progress notification for interactive bugreports" 2019-07-22 10:14:44 +00:00
Abhijeet Kaur
1a5030cc7d Add logic to create screenshot file
* Creating screenshot file for all types of bugreport
* The logic to populate the screenshot file is in dumpstate (few
bugreport types that do not need screenshots will leave the file
untouched/empty)
* Delete the empty screenshot file and set the file to null so that
empty file does not get shared
* This TODO was previously left as binder did not allow to send null
screenshotfd, which was recently fixed. While fixing and testing the
optional screenshot fd CL with these changes, left the value "null" by
default. Fixed now.

* Not adding any logic here on the basis of the type of bugreport as
all that is already in dumpstate

* Making the names of bugreport (.zip file) and bugreport screenshot
(.png file) consistent. In the old flow also both have the same names.

Bug: 123617758
Test: * Build and flash to the device
      * Turn on use bugreport API feature flag from Settings
      * Take interactive bugreport
      Expectation: On clicking the notification to "Share the bugreport"
      only 1 file (the bugreport zip file) gets shared. Also, there is
      no screenshot file in /bugreports/ in the device
      * Take full bugreport
      Expectation: On clicking the notification to "Share the bugreport"
      2 files (bugreport zip and screenshot png file) get shared. Also
      we can see the screenshot file in /bugreports/ in the device

Change-Id: I39cb6913033b6e3c61bd0c6655a76524c12d2428
2019-07-18 16:53:06 +01:00
Abhijeet Kaur
97a8f0f5db Progress notification for interactive bugreports
Send instant progress notification for interactive bugreports (when
using bugreport API), starting notification when progress = 0

Bug: 123617758

Test: * Build and flash to the device
      * Turn on use bugreport API feature flag from Settings
      * Take interactive bugreport
      Expectation: Progress notification is shown instantly

Change-Id: Icd834c05324108430ee6cb9c3d8539f91059e563
2019-06-04 15:36:16 +01:00
Abhijeet Kaur
0a295724f2 Merge "Add dark theme for Shell app." into qt-dev am: 190e99cf3a am: 1cceacc469
am: 2c90394b5d

Change-Id: I8c913dfa6823f9c9cfee1a68a3f61000e5594b57
2019-05-29 07:27:37 -07:00
Abhijeet Kaur
767c8bb96a Migrate Shell app to use the new bugreport API.
Add new calls to bugreport API, all the while keeping the previous code
and logic untouched.

Added feature flag in Settings which if untouched, runs the old dumpstate workflow
by default. To test the new workflow turn on the feature flag from UI or
`adb shell setprop settings_call_bugreport_api true`.

Add permission TRIGGER_SHELL_BUGREPORT so that not all can send
broadcasts to trigger bugreports.

Create new receiver BugreportRequestedReceiver for the new broadcast intent that the shell app will
use.

Whitelist Shell app to use the bugreport API.

Bug: 123617758

Test: manually built and flash to device. Turn on the feature flag, generate bugreports and check
the onProgress and onFinish notifications.
Test: Turn off the feature flag test old workflow.

Change-Id: I1c7c258a48815a0386d7d4771301cd76f9cae3d0
2019-05-28 14:31:57 +01:00
Abhijeet Kaur
8549ccf69b Add dark theme for Shell app.
Bugreport info dialog is used in the BugreportProgressService; services
are not themeable from the manifest file. Added themed context wrapper
in the service file.

Text view underlines are no longer black, and are white in color.

Bug: 128364209
Test: build and flash to device, manually verified the color of the dialog
Change-Id: Ia42c1c7c2b6f2e30d91a5522f1d6b3507b032cdb
2019-05-24 14:28:56 +00:00
Abhijeet Kaur
f990cf0392 Add Looper.prepare() to doInBackground()
Fix runtime error that was being thrown as Looper.prepare() was not called
in the async function doInBackground.

Bug: 124612105

Test: Was not able to reproduce the bug (that is make code execution flow
through the catch block).
* Reproduced by throwing IOException in the try block so that code flows
  to the catch block.
* Build and flash.
* Take interactive bugreport and change title and name of the bugreport from
  the progress bar.

Merged-In: I6a5ea594d95462e1c66bd28eb81dd5f4daa6f35e
Change-Id: I6a5ea594d95462e1c66bd28eb81dd5f4daa6f35e
(cherry picked from commit b7a6549654)
2019-03-23 15:39:03 +00:00
Abhijeet Kaur
b7a6549654 Add Looper.prepare() to doInBackground()
Fix runtime error that was being thrown as Looper.prepare() was not called
in the async function doInBackground.

Bug: 124612105

Test: Was not able to reproduce the bug (that is make code execution flow
through the catch block).
* Reproduced by throwing IOException in the try block so that code flows
  to the catch block.
* Build and flash.
* Take interactive bugreport and change title and name of the bugreport from
  the progress bar.

Change-Id: I6a5ea594d95462e1c66bd28eb81dd5f4daa6f35e
2019-03-22 11:37:07 +00:00
Nandana Dutt
b2da22a0de Improvements to Bugreporting API.
* Add cancelBugreport method.
* Remove unused arguments to onFinished listener call.
* Publish the system service now that sepolicy for it
  is submitted.
* Use the new bugreportd service.

Test: boots
BUG:111441001
Change-Id: I12d72e0e1f4ca72d285fd02a3fc1a44f5c179885
2019-01-23 10:21:45 +00:00
Nandana Dutt
c8c77bc043 BugreportAPI : Connect listener to binder callbacks
BUG: 111441001
Test: builds
Test: interactive bugreport still works
Change-Id: Ie3f2328f558bb2de1dec2908c6ab13f5a17df115
2019-01-15 12:51:42 +00:00
Nandana Dutt
432f8c7b86 Add the new dumpstate listener methods to implementations
Add dummy implementations for status, error and finished callbacks.
Next step: wire these up end-to-end; change Shell's listener to be
BugreportManager.BugreportListener, and make it communicate with the
native service explicitly through the new system api.

BUG: 111441001
Test: Verified progress in interactive bugreport still works
Change-Id: Iad0bb7b23b04f6bc7e3b31e5071df42409c78684
2019-01-14 17:55:27 +00:00
Nandana Dutt
7eaa2cbf51 Merge "Disable the buginfo dialog on AndroidTV" 2018-10-03 15:39:22 +00:00
Nandana Dutt
702587e787 Merge "Warn about sensitive bugreport contents." 2018-10-03 09:51:59 +00:00
Felipe Leme
ed5e51dbb2 Synchronize access to sNotificationBundle.
Otherwise Shell can crash due to ConcurrentModificationException

Test: atest BugreportReceiverTest
Test: manual verification

Fixes:116280360

Change-Id: I138acd43b313d2a7a9d945fb44a9d63e1ad798eb
Merged-In: I138acd43b313d2a7a9d945fb44a9d63e1ad798eb
(cherry picked from commit ee72fa19a9)
2018-10-02 11:39:42 +01:00
Jeff Sharkey
e70a61d56d Warn about sensitive bugreport contents.
We show this message when clicking a notification, but we also want
to alert users when they're picking files to attach/share.

Bug: 114711671
Test: manual
Change-Id: I23e249c93d6fa9cf960ef2a61d3fe769eb56ddf5
Merged-In: I23e249c93d6fa9cf960ef2a61d3fe769eb56ddf5
(cherry picked from commit 59137825eb)
2018-10-02 11:34:50 +01:00
Kristian Monsen
86f69db5c0 Disable the buginfo dialog on AndroidTV
Bug: 113033835
Test: Tested manually on Atom
Change-Id: If65997e28db7c0100018145f9313549494e41a2a
Merged-In: If65997e28db7c0100018145f9313549494e41a2a
(cherry picked from commit cb68d29f03f14b188ccc02b877161173b631685d)
(cherry picked from commit 01badb7874)
2018-10-02 11:31:27 +01:00
KOUSHIK PANUGANTI
ec8d258c60 Migrated various apps under frameworks/base/packages/Shell to androidx
Bug: 76692459
Test: make Shell
Change-Id: If11159cac1bd5aa61c46a346647b97a661abbf11
Merged-In: If11159cac1bd5aa61c46a346647b97a661abbf11
(cherry picked from commit e92135a6e9)
(cherry picked from commit 474df059db)
(cherry picked from commit e0efaddbeb)
2018-08-28 14:20:24 -07:00
Jeff Sharkey
ecff5dc68b Bugreport SAF provider isn't "advanced."
UX churn over the years has turned FLAG_ADVANCED into "show internal
storage" which means it's super confusing.

When the Bugreport SAF provider is enabled, just show it.

Test: sure
Bug: 32540478
Change-Id: Id11278c27da8f5f1d1346b208d85b5db59a9e174
2018-02-22 09:41:17 -07:00
Lucas Dupin
c80c67e7bc Allow custom keyguard "prompt reason"
Adds the possibility of presenting a custom message on
the keyboard if you're trying to dismiss the keyguard.

This is particularly useful when you're showing the
bouncer because custom authentication (SmarLock)
failed.

Test: launch FLAG_SHOW_WHEN_LOCKED activity and
      call KeyguardManager#requestDismissKeyguard
Fixes: 63940122
Change-Id: I0d88c0e59521887efa56d74874062b2b14970e4e
2018-01-11 13:15:31 -08:00
Vishnu Nair
497350d61e Apply IDumpstateListener changes
Bug: 70154685
Test: Take bugreport on phone and verify debug output
Change-Id: Icc5b532689c050837f6b4bde93f4655abec4aa0a
2018-01-05 10:28:11 -08:00
chaviw
a69e0a7d7c Update screenshot requests to render proper crop and rotation.
The previous screenshot requests in SystemUI would generate a bitmap
and then adjust crop and rotation afterwards. Bitmaps from screenshots
are now hw Bitmaps so they can't be updated in software. Instead request
the proper crop and rotation from the native code to generate a Bitmap
with the correct configurations.

Change-Id: I4591c468b055c784460e5ddf2f9163ffa943c2ee
Fixes: 69898957
Test: Manual screenshots work and bugreport screenshots work in landscape.
2017-11-30 13:02:14 -08:00
Felipe Leme
85ac627e78 Don't tag bugreport notifications as System.
Otherwise, they'll skip DND settings.

Test: mmm -j32 frameworks/base/packages/Shell && adb install -r -g ${OUT}/data/app/ShellTests/ShellTests.apk && adb shell am instrument -e class com.android.shell.BugreportReceiverTest$1 -w com.android.shell.tests/android.support.test.runner.AndroidJUnitRunner

Bug: 63509844

Change-Id: I7d802b4c8d115c989979a9edaff2f83fc19a4eae
2017-07-14 11:32:46 -07:00
Jeff Sharkey
5ab0243330 Only require that system UIDs tag their sockets.
Apps with a normal UID are typically isolated enough to not require
socket tagging; we're mostly interested in tracking down internal
UIDs that have lots of code sharing the same UID.

Also fix up everyone doing manual string checks of Build.TYPE, since
we now have first-class fields for those.

Bug: 38126076
Test: builds, boots
Change-Id: I3a40348196bd8459289f2b9355d9783a07f1e7dd
2017-06-27 11:11:06 -06:00
TreeHugger Robot
0ecc0ff5e0 Merge "Enable wide color gamut rendering" 2017-06-02 20:07:56 +00:00
Romain Guy
26a2b97dbe Enable wide color gamut rendering
When wide color gamut rendering is requested, hwui will now
use an rgba16f scRGB-nl surface for rendering. This change
also fixes the way screenshots are handled in the platform
to behave properly with wide gamut rendering.

This change does not affect hardware layers. They also
need to use rgba16f scRGB-nl; this will be addressed in
another CL.

Bug: 29940137
Test: CtsUiRenderingTestCases, CtsGraphicsTestCases

Change-Id: I68fd96c451652136c566ec48fb0e97c2a7a257c5
2017-06-02 11:02:13 -07:00
Amit Pawar
44ff1b7e78 Merge "Fix #62169466 bug report sharing options empty" into oc-dev am: 4d473c65cb
am: e775158c6b

Change-Id: Ice0e3330502330dde934d7e7544e466fcffcacca
2017-05-30 20:39:37 +00:00
Amith Yamasani
1d6e1759d2 Fix #62169466 bug report sharing options empty
Was caused by a new requirement to not offer to show
non-exported intent handlers as options. For first
time warning dialog, don't show a chooser activity.

Change-Id: Ibada9a7a14b77ec0670bf35ba0944f369d42bf69
Fixes: 62169466
Test: manual
Test: mmm -j32 frameworks/base/packages/Shell && adb install -r -g ${OUT}/data/app/ShellTests/ShellTests.apk && adb shell am instrument -e class com.android.shell.BugreportReceiverTest$1 -w com.android.shell.tests/android.support.test.runner.AndroidJUnitRunner
2017-05-30 20:04:32 +00:00
Makoto Onuki
72f378d0c1 Merge "Working around bugreport crash issues" into oc-dev am: 5176a4cda3
am: 44cb1486f3

Change-Id: I70495f11952e9d234d74fa3fd7149dec70fb7350
2017-05-25 18:27:52 +00:00