summaryrefslogtreecommitdiff
path: root/packages/Shell/src
AgeCommit message (Collapse)Author
2021-01-07Merge "Fix missing fields when parceling the BugreportInfo"Rhed Jao
2021-01-07Fix missing fields when parceling the BugreportInfoRhed Jao
Shell app exception resulted from two missing fields in BugreportInfo when it's parceling. Application ran into the duplicate logic to send notification and start foreground service then caused the exception. Bug: 176624074 Test: Request a bugreport; kill the com.android.shell; \ tap the share notification Change-Id: Ia80f5e77f5486addf9ea7822f566c3fd7d75f42a
2020-12-21Returns immediately if the bugreport file already existsRhed Jao
There's a case that BugreportProgressService is invoked twice quickly, and both services create the same bugreport file name. The later one may delete current running bugreport file in its clean function, when it detects another bugreport is running. Bug: 174314124 Bug: 175287931 Test: atest BugreportReceiverTest Change-Id: I5e1802c5912f4414f1ad3b8bdaf7c7420332b9d6 Merged-In: I5e1802c5912f4414f1ad3b8bdaf7c7420332b9d6
2020-12-21Fixes an error handling in BugreportProgressServiceRhed Jao
Calls onError function when bugreport is finished and file is empty. Bug: 174314124 Bug: 175287931 Test: atest BugreportReceiverTest Change-Id: I4542568fd2d2ad1c75c7c3b223accca4995938a3 Merged-In: I4542568fd2d2ad1c75c7c3b223accca4995938a3
2020-12-21Fix BugreportReceiverTestRhed Jao
- Implements a local binder and #onBind in the service to return the service instance. - Mocks BugreportManager in the service to avoid service interacting with the dumpstate. - Fixes dialog name field did not disable after service is finished. - Fixes screenshot did not remove if the name is empty. - Extends screenshot delay timeout in tests. - Fine tune the UiBot to fit new bugreport notification. - Removes obsolete cases in the tests. Bug: 143130523 Bug: 175287931 Test: atest BugreportReceiverTest Change-Id: Iae89206da1d08a10891503869bbbf1ce18d4e31f Merged-In: Iae89206da1d08a10891503869bbbf1ce18d4e31f
2020-12-21Do not buzzing for each progress of bugreport notificationRhed Jao
Only alert bugreport notification at the begining and end. Bug: 146135200 Bug: 175287931 Test: Manually changing the notification settings to default from silent. Change-Id: Ie955266ad8a7a27a9dc74743e276b5e9c7a2d6fb Merged-In: Ie955266ad8a7a27a9dc74743e276b5e9c7a2d6fb
2020-11-23Replace broadcast with adding a method in BugreportCallbackPaul Chang
BUG: 154298410 Test: BetterBug can work normally in bug report shortcut flow Change-Id: Ibc1a5a8ac308c303399d28eb8c177096b805fdf9 Merged-In: Ibc1a5a8ac308c303399d28eb8c177096b805fdf9 (cherry picked from commit ec91d7700d9316ba09d639ab55ce94fb72d0f8ec)
2020-09-28Merge "Update language to comply with Android's inclusive language guidance"Treehugger Robot
2020-08-03Update language to comply with Android's inclusive language guidanceAlice Kuo
See https://source.android.com/setup/contribute/respectful-code for reference #inclusivefixit Bug: 162536543 Change-Id: I468147a439c1a60488def7db3e44bfc361bddbe4
2020-05-22Merge "Take interactive bugreports on Android TV" into rvc-devRobin Lee
2020-05-21Take interactive bugreports on Android TVRobin Lee
We want to take a screenshot immediately, not after dumpsys finished. This also gives the user some feedback that we took a screenshot when they were paying attention, whereas the notification might go under the radar if posted the 30-90 seconds later it will be shown otherwise. Also gives us the progress notification in the Android TV notification tray, which helps the user keep track of what is going on and how long it is expected to take. Previously either no feedback was shown at all on key press, or a simple Toast was shown on selecting the bugreport option from the TV Settings app. Test: Press DPAD_CENTER + BACK, observe screenshot and progress. Fix: 151865303 Change-Id: I78753697a7867042d28364a6b6d61fdb96f8bc96
2020-05-19Revert "Add a null home activity to Shell.apk"Isaac Chen
This reverts commit 6b1c4a9e09ea096d06351358d731290a11a1e337. Bug: 149226068 Bug: 149307007 Bug: 149780604 Test: $ lunch aosp_crosshatch-userdebug; m # flash and boot on a crosshatch # Settings -> Apps & notifications -> Default apps -> Home apps # Only Quickstep home is there; no Shell home any more $ lunch csi_arm64-userdebug; m # flash the resulted system.img on a crosshatch and boot $ atest DeviceHealthTests # all passed Change-Id: I927b7dae779da25589f2198e0480c0f2a788a7e4 Merged-In: I927b7dae779da25589f2198e0480c0f2a788a7e4 (cherry picked from commit 539298c1b9e1c0a42d041cbc845501cef289abf7)
2020-05-18Merge "Revert "Add a null home activity to Shell.apk"" into rvc-devTreeHugger Robot
2020-05-08Revert "Add a null home activity to Shell.apk"Isaac Chen
This reverts commit 6b1c4a9e09ea096d06351358d731290a11a1e337. Bug: 149226068 Bug: 149307007 Bug: 149780604 Test: $ lunch aosp_crosshatch-userdebug; m # flash and boot on a crosshatch # Settings -> Apps & notifications -> Default apps -> Home apps # Only Quickstep home is there; no Shell home any more $ lunch csi_arm64-userdebug; m # flash the resulted system.img on a crosshatch and boot $ atest DeviceHealthTests # all passed Change-Id: I927b7dae779da25589f2198e0480c0f2a788a7e4
2020-04-06Delete empty bugreport files onErrorAbhijeet Kaur
Bug: 152839953 Test: Take another bugreport, while one is in progress. Without this change: bugreport files for the second bugreport can be seen in /bugreports With this change: no file for the second bugreport can be seen. This is the expected behavior. Change-Id: I45c1f66f3a52ba9a31413cf9748bc5504eaa65d0
2020-04-03Merge "Follow best practices for Atomic variables" into rvc-devTreeHugger Robot
2020-04-02Follow best practices for Atomic variablesAbhijeet Kaur
* Make Atomic variables final so it can never be re-assigned to a null object and hence avoid NPE. * Set the value of the variables instead of re-assigning the object. Test: Manual Bug: 152479372 Change-Id: I58279d589d6247c53155755223fd8863f1049257
2020-04-02Track bugreports immediately after triggering a bugreportAbhijeet Kaur
Remove an old hack that was put in place as bugreport ID was updated a bit later in the bugreport generation phase. This change removes the race condition around triggering bugreports almost instantly. Bug: 152292912 Test: Trigger consecutive bugreports from ActivityManager WAI. (Fails without this change) Change-Id: Ib08bc2c7d8ae765894998e5bfa0d9b6f3efa088b
2020-03-31Merge "Delete bugreport file on bugreport cancel" into rvc-devTreeHugger Robot
2020-03-30Delete bugreport file on bugreport cancelAbhijeet Kaur
Note: bugreport Cancel is not the same as bugreport onError. Files are not deleted onError, as it still has some information before the bugreport crashed/stopped. Bugreport Cancel is triggered by the user, hence clean up all the files. Bug: 146994281 Test: Cancel interactive bugreport from UI, deletes the current bugreport files Change-Id: I2606e491cbaa20eaa60980e98af56a194bae2280
2020-03-27Merge "Initialize progress and lastProgress AtomicIntegers" into rvc-devTreeHugger Robot
2020-03-26Initialize progress and lastProgress AtomicIntegersAbhijeet Kaur
This is essential for bugreports that do not send progress updates. Bug: 152343458 Test: Take and share full bugreport Change-Id: Id634afd82a92c02d1cf96ffd719fff8670fb8709
2020-03-25Show predefined title and description in finished notificationAbhijeet Kaur
shareTitle and shareDescription is passed by the caller of the bugreport. Show these in the finished bugreport notification. Pre-set shareTitle takes precedence over user modified title. shareDescription and description are not related/dependant on each other in any way. Bug: 150333444 Test: Manual (by passing EXTRA_TITLE and EXTRA_DESCRIPTION from ActivityManagerService when trigerring a bugreport) Change-Id: I2bfd080aeee677cdc8d0af339d7ad4a29451c3e0
2020-03-18Clean up code in BugreportProgressServiceAbhijeet Kaur
* Make fields (progress, lastUpdate and finished) atomic to make them thread safe and also reduce getters/setters. * Make lastProgress a private field in BugreportInfo. * Move deleteScreenshots to BugreportInfo class. * Make fields with lock protected getters/setters as private. * Make fields that should not be changed as final. Bug: 147033613 Test: manual Merged-In: I8f0fb4865c1b7c5d62bebca3e250eee59b4e71f4 Change-Id: I8f0fb4865c1b7c5d62bebca3e250eee59b4e71f4 (cherry picked from commit fe7d1ab0cbcb6455a5760a092cfb50606f48d4b7)
2020-02-28Clean up code of starting bug reportPaul Chang
- Let screenshot fd be null if Shell doesn't want to take default screenshot when bug report is triggered. BUG:149525300 Test: Flash and test interactive/full bugreports generated using Shell, and Shell flow does not break during tests Change-Id: I50908af63d74ed66156354ec0b5a237f7131061a Merged-In: I50908af63d74ed66156354ec0b5a237f7131061a
2020-02-17Merge "Add synchronization locks to shared objects"Abhijeet Kaur
2020-02-14Add synchronization locks to shared objectsAbhijeet Kaur
Make methods that read/write mBugreportInfos lock protected and add "Locked" suffix to the method name. BugreportInfo objects are read/write in different functions, to keep the code clean, add lock protected getter/setter methods. Bug: 142217059 Test: Takes interactive/full bugreports as expected Change-Id: Iaadd6c9dce5009e40dd015e3b62bcd6e36966e00
2020-02-14Refactor bugreport files creation and getfd methodsAbhijeet Kaur
Handle Exceptions around file creation/open fd more gracefully inside BugreportInfo class. This is communicated to the caller of BugreportInfo by returning null for getFd() methods. Test: builds Change-Id: Ie241dce0810645e04b2492dc8b1bcbc3e9f8f664
2020-02-07Merge "Remove duplicate directory variables with the same value"Abhijeet Kaur
2020-02-07Remove duplicate directory variables with the same valueAbhijeet Kaur
Bugreport files and screenshot files are saved in the same directory. Use common variable for consistency and to avoid duplicacy. Move bugreport file and default screenshot file creation to the constructor as for each bugreportInfo object a bugreportFile must exist. Bug:123617758 Test: Takes interactive/full bugreports as expected Change-Id: I338e852c543e63b403536cd852518b6601ea32f0
2020-02-07Merge "Add a null home activity to Shell.apk" am: fd2ba540df am: 24f93a2b48 ↵Automerger Merge Worker
am: 26f49e7b75 Change-Id: I77be28465d8fe8439877859e3e630103efe69c4f
2020-02-07Add a null home activity to Shell.apkIsaac Chen
In configurations where AOSP Settings.apk is not included, there might not be any home activity. E.g. CSI doesn't have Settings.apk. This CL adds a null home activity to Shell.apk, which is in CSI, so the framework can be in a sane state. Without such null home activity in CSI, package manager fails to install any APKs. Bug: 148044842 Test: $ lunch csi_arm64-userdebug; m -j # Flash CSI to a Pixel (with AVB disabled) and reboot $ m DeviceHealthChecks $ adb install $OUT/testcases/DeviceHealthTests/arm64/DeviceHealthTests.apk Performing Streamed Install Success Change-Id: I87999e30298bbe42af64f28e88fc6dc5975f1ca3
2020-01-26Remove legacy-flow no-op variables: max, realMax and realProgressAbhijeet Kaur
Legacy onProgress aidl listener callback function used to take 2 params: progress and max. So, the client had to calculate the percentage progress. This legacy onProgress method is removed. Now dumpstate sends the actual progress in percentage without requiring the client to calculate it. Bug: 123617758 Test: Takes interactive bugreport as expected. And shows progress notification as expected. Change-Id: Ic5a355cc886e51b964f73c227f5f657173e99420
2019-10-30Merge "Move heap dump sharing to SHELL." am: c29b5cba29 am: 2cdf2d5ad7Kweku Adams
am: 215d92f880 Change-Id: Ic092f2d5c0c0a1497c19e73417c68b8e8616cc63
2019-10-29Move heap dump sharing to SHELL.Kweku Adams
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-22Remove unused broadcasts/functions/variables from ShellAbhijeet Kaur
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-10Read screenshot file from screenshotFiles arrayAbhijeet Kaur
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-07Add synchronized locks to bugreport callback methodsAbhijeet Kaur
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-07Fix bugreport rename in API workflowAbhijeet Kaur
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-09-26Merge "Handle legacy broadcasts from dumpstate logic in onFinished() callback"Abhijeet Kaur
2019-09-24Handle legacy broadcasts from dumpstate logic in onFinished() callbackAbhijeet Kaur
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-18Merge "Bugreport progress notification should use the bug icon." am: ↵Dan Sandler
cb783ea2ee am: 704b11756a am: 777b2325be am: 362e959c7d Change-Id: I161186cbfef27ace50349d60b1726ef3ba6d1932
2019-09-12Bugreport progress notification should use the bug icon.Dan Sandler
(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-08-19Set up to migrate requestBugreport flavors to use bugreport APIAbhijeet Kaur
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-07Merge "Remove obsolete methods from DumpstateListener implementations"Nandana Dutt
am: cbdb10f982 Change-Id: Ia746b0cdadd0c4d652c373763f7a12266b080e3b
2019-08-06Remove obsolete methods from DumpstateListener implementationsNandana Dutt
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-06Merge "Remove obsolete methods from DumpstateListener implementations"Nandana Dutt
2019-08-05Merge "Add logic to handle screenshot file creation failure"TreeHugger Robot
2019-08-05Add logic to handle screenshot file creation failureAbhijeet Kaur
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-01Remove obsolete methods from DumpstateListener implementationsNandana Dutt
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