Merge "Add pid on main bugreport notifications." into nyc-dev
am: 000b84451d
* commit '000b84451d6a0b83345421ac1eae4ab402d1b8d3':
Add pid on main bugreport notifications.
This commit is contained in:
@@ -13,14 +13,13 @@
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<resources>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="app_label">Shell</string>
|
||||
|
||||
<!-- Title of notification indicating a bugreport is being generated. [CHAR LIMIT=50] -->
|
||||
<string name="bugreport_in_progress_title">Bug report is being generated</string>
|
||||
<string name="bugreport_in_progress_title">Bug report <xliff:g id="id">#%d</xliff:g> is being generated</string>
|
||||
<!-- Title of notification indicating a bugreport has been successfully captured. [CHAR LIMIT=50] -->
|
||||
<string name="bugreport_finished_title">Bug report captured</string>
|
||||
<string name="bugreport_finished_title">Bug report <xliff:g id="id">#%d</xliff:g> captured</string>
|
||||
<!-- Title of notification indicating a bugreport is being updated before it can be shared. [CHAR LIMIT=50] -->
|
||||
<string name="bugreport_updating_title">Adding details to the bug report</string>
|
||||
<!-- Content notification indicating a bugreport is being updated before it can be shared, asking the user to wait [CHAR LIMIT=50] -->
|
||||
@@ -53,12 +52,12 @@
|
||||
<string name="bugreport_screenshot_action">Screenshot</string>
|
||||
|
||||
<!-- Toast message sent when the a screenshot for the bug report was taken successfully. -->
|
||||
<string name="bugreport_screenshot_taken">Screenshot taken succesfully.</string>
|
||||
<string name="bugreport_screenshot_taken">Screenshot taken successfully.</string>
|
||||
<!-- Toast message sent when the a screenshot for the bug report was not taken due to an error. -->
|
||||
<string name="bugreport_screenshot_failed">Screenshot could not be taken.</string>
|
||||
|
||||
<!-- Title of the dialog asking for user-defined bug report details like name, title, and description. -->
|
||||
<string name="bugreport_info_dialog_title">Bug report details</string>
|
||||
<string name="bugreport_info_dialog_title">Bug report <xliff:g id="id">#%d</xliff:g> details</string>
|
||||
|
||||
<!-- Text of the hint asking for the bug report name, which when set will define a suffix in the
|
||||
bug report file names. [CHAR LIMIT=30] -->
|
||||
|
||||
@@ -438,7 +438,7 @@ public class BugreportProgressService extends Service {
|
||||
mContext.getString(R.string.bugreport_screenshot_action),
|
||||
screenshotPendingIntent).build();
|
||||
|
||||
final String title = mContext.getString(R.string.bugreport_in_progress_title);
|
||||
final String title = mContext.getString(R.string.bugreport_in_progress_title, info.pid);
|
||||
|
||||
final String name =
|
||||
info.name != null ? info.name : mContext.getString(R.string.bugreport_unnamed);
|
||||
@@ -880,7 +880,7 @@ public class BugreportProgressService extends Service {
|
||||
shareIntent.putExtra(EXTRA_PID, info.pid);
|
||||
shareIntent.putExtra(EXTRA_INFO, info);
|
||||
|
||||
final String title = context.getString(R.string.bugreport_finished_title);
|
||||
final String title = context.getString(R.string.bugreport_finished_title, info.pid);
|
||||
final Notification.Builder builder = new Notification.Builder(context)
|
||||
.setSmallIcon(com.android.internal.R.drawable.stat_sys_adb)
|
||||
.setContentTitle(title)
|
||||
@@ -1232,7 +1232,7 @@ public class BugreportProgressService extends Service {
|
||||
|
||||
mDialog = new AlertDialog.Builder(context)
|
||||
.setView(view)
|
||||
.setTitle(context.getString(R.string.bugreport_info_dialog_title))
|
||||
.setTitle(context.getString(R.string.bugreport_info_dialog_title, pid))
|
||||
.setCancelable(false)
|
||||
.setPositiveButton(context.getString(com.android.internal.R.string.ok),
|
||||
null)
|
||||
|
||||
@@ -36,6 +36,7 @@ import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.Writer;
|
||||
import java.text.NumberFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.SortedSet;
|
||||
@@ -58,6 +59,7 @@ import android.os.SystemProperties;
|
||||
import android.service.notification.StatusBarNotification;
|
||||
import android.support.test.uiautomator.UiDevice;
|
||||
import android.support.test.uiautomator.UiObject;
|
||||
import android.support.test.uiautomator.UiObjectNotFoundException;
|
||||
import android.test.InstrumentationTestCase;
|
||||
import android.test.suitebuilder.annotation.LargeTest;
|
||||
import android.text.TextUtils;
|
||||
@@ -113,7 +115,7 @@ public class BugreportReceiverTest extends InstrumentationTestCase {
|
||||
private static final String NO_NAME = null;
|
||||
private static final String NO_SCREENSHOT = null;
|
||||
private static final String NO_TITLE = null;
|
||||
private static final Integer NO_PID = null;
|
||||
private static final int NO_PID = 0;
|
||||
private static final boolean RENAMED_SCREENSHOTS = true;
|
||||
private static final boolean DIDNT_RENAME_SCREENSHOTS = false;
|
||||
|
||||
@@ -159,16 +161,20 @@ public class BugreportReceiverTest extends InstrumentationTestCase {
|
||||
sendBugreportStarted(1000);
|
||||
waitForScreenshotButtonEnabled(true);
|
||||
|
||||
assertProgressNotification(NAME, "0.00%");
|
||||
final NumberFormat nf = NumberFormat.getPercentInstance();
|
||||
nf.setMinimumFractionDigits(2);
|
||||
nf.setMaximumFractionDigits(2);
|
||||
|
||||
assertProgressNotification(NAME, nf.format(0));
|
||||
|
||||
SystemProperties.set(PROGRESS_PROPERTY, "108");
|
||||
assertProgressNotification(NAME, "10.80%");
|
||||
assertProgressNotification(NAME, nf.format(0.108));
|
||||
|
||||
SystemProperties.set(PROGRESS_PROPERTY, "500");
|
||||
assertProgressNotification(NAME, "50.00%");
|
||||
assertProgressNotification(NAME, nf.format(0.50));
|
||||
|
||||
SystemProperties.set(MAX_PROPERTY, "2000");
|
||||
assertProgressNotification(NAME, "25.00%");
|
||||
assertProgressNotification(NAME, nf.format(0.25));
|
||||
|
||||
Bundle extras =
|
||||
sendBugreportFinishedAndGetSharedIntent(PID, mPlainTextPath, mScreenshotPath);
|
||||
@@ -198,11 +204,11 @@ public class BugreportReceiverTest extends InstrumentationTestCase {
|
||||
sendBugreportFinished(PID, mPlainTextPath, mScreenshotPath);
|
||||
|
||||
if (serviceDies) {
|
||||
waitShareNotification();
|
||||
waitShareNotification(PID);
|
||||
killService();
|
||||
}
|
||||
|
||||
Bundle extras = acceptBugreportAndGetSharedIntent();
|
||||
Bundle extras = acceptBugreportAndGetSharedIntent(PID);
|
||||
assertActionSendMultiple(extras, BUGREPORT_CONTENT, SCREENSHOT_CONTENT, PID, ZIP_FILE,
|
||||
NAME, NO_TITLE, NO_DESCRIPTION, 2, RENAMED_SCREENSHOTS);
|
||||
|
||||
@@ -222,7 +228,7 @@ public class BugreportReceiverTest extends InstrumentationTestCase {
|
||||
|
||||
sendBugreportStarted(1000);
|
||||
sendBugreportFinished(PID, mPlainTextPath, NO_SCREENSHOT);
|
||||
waitShareNotification();
|
||||
waitShareNotification(PID);
|
||||
|
||||
// There's no indication in the UI about the screenshot finish, so just sleep like a baby...
|
||||
Thread.sleep(SAFE_SCREENSHOT_DELAY * DateUtils.SECOND_IN_MILLIS);
|
||||
@@ -231,7 +237,7 @@ public class BugreportReceiverTest extends InstrumentationTestCase {
|
||||
killService();
|
||||
}
|
||||
|
||||
Bundle extras = acceptBugreportAndGetSharedIntent();
|
||||
Bundle extras = acceptBugreportAndGetSharedIntent(PID);
|
||||
assertActionSendMultiple(extras, BUGREPORT_CONTENT, NO_SCREENSHOT, PID, ZIP_FILE,
|
||||
NAME, NO_TITLE, NO_DESCRIPTION, 1, RENAMED_SCREENSHOTS);
|
||||
|
||||
@@ -243,7 +249,7 @@ public class BugreportReceiverTest extends InstrumentationTestCase {
|
||||
sendBugreportStarted(1000);
|
||||
waitForScreenshotButtonEnabled(true);
|
||||
|
||||
DetailsUi detailsUi = new DetailsUi(mUiBot);
|
||||
DetailsUi detailsUi = new DetailsUi(mUiBot, PID);
|
||||
|
||||
// Check initial name.
|
||||
String actualName = detailsUi.nameField.getText().toString();
|
||||
@@ -296,7 +302,7 @@ public class BugreportReceiverTest extends InstrumentationTestCase {
|
||||
sendBugreportStarted(1000);
|
||||
waitForScreenshotButtonEnabled(true);
|
||||
|
||||
DetailsUi detailsUi = new DetailsUi(mUiBot);
|
||||
DetailsUi detailsUi = new DetailsUi(mUiBot, PID);
|
||||
|
||||
// Check initial name.
|
||||
String actualName = detailsUi.nameField.getText().toString();
|
||||
@@ -326,7 +332,7 @@ public class BugreportReceiverTest extends InstrumentationTestCase {
|
||||
sendBugreportStarted(1000);
|
||||
waitForScreenshotButtonEnabled(true);
|
||||
|
||||
DetailsUi detailsUi = new DetailsUi(mUiBot);
|
||||
DetailsUi detailsUi = new DetailsUi(mUiBot, PID);
|
||||
|
||||
detailsUi.nameField.setText("");
|
||||
detailsUi.titleField.setText("");
|
||||
@@ -363,14 +369,14 @@ public class BugreportReceiverTest extends InstrumentationTestCase {
|
||||
waitForScreenshotButtonEnabled(true);
|
||||
}
|
||||
|
||||
DetailsUi detailsUi = new DetailsUi(mUiBot);
|
||||
DetailsUi detailsUi = new DetailsUi(mUiBot, PID);
|
||||
|
||||
// Finish the bugreport while user's still typing the name.
|
||||
detailsUi.nameField.setText(NEW_NAME);
|
||||
sendBugreportFinished(PID, mPlainTextPath, mScreenshotPath);
|
||||
|
||||
// Wait until the share notification is received...
|
||||
mUiBot.getNotification(mContext.getString(R.string.bugreport_finished_title));
|
||||
waitShareNotification(PID);
|
||||
// ...then close notification bar.
|
||||
mContext.sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
|
||||
|
||||
@@ -384,7 +390,7 @@ public class BugreportReceiverTest extends InstrumentationTestCase {
|
||||
detailsUi.clickOk();
|
||||
|
||||
// Finally, share bugreport.
|
||||
Bundle extras = acceptBugreportAndGetSharedIntent();
|
||||
Bundle extras = acceptBugreportAndGetSharedIntent(PID);
|
||||
assertActionSendMultiple(extras, BUGREPORT_CONTENT, SCREENSHOT_CONTENT, PID, TITLE,
|
||||
NAME, TITLE, mDescription, 1, RENAMED_SCREENSHOTS);
|
||||
|
||||
@@ -397,7 +403,7 @@ public class BugreportReceiverTest extends InstrumentationTestCase {
|
||||
|
||||
// Send notification and click on share.
|
||||
sendBugreportFinished(NO_PID, mPlainTextPath, null);
|
||||
acceptBugreport();
|
||||
acceptBugreport(NO_PID);
|
||||
|
||||
// Handle the warning
|
||||
mUiBot.getVisibleObject(mContext.getString(R.string.bugreport_confirm));
|
||||
@@ -421,7 +427,7 @@ public class BugreportReceiverTest extends InstrumentationTestCase {
|
||||
public void testShareBugreportAfterServiceDies() throws Exception {
|
||||
sendBugreportFinished(NO_PID, mPlainTextPath, NO_SCREENSHOT);
|
||||
killService();
|
||||
Bundle extras = acceptBugreportAndGetSharedIntent();
|
||||
Bundle extras = acceptBugreportAndGetSharedIntent(NO_PID);
|
||||
assertActionSendMultiple(extras, BUGREPORT_CONTENT, NO_SCREENSHOT);
|
||||
}
|
||||
|
||||
@@ -457,14 +463,14 @@ public class BugreportReceiverTest extends InstrumentationTestCase {
|
||||
private void assertProgressNotification(String name, String percent) {
|
||||
// TODO: it currently looks for 3 distinct objects, without taking advantage of their
|
||||
// relationship.
|
||||
openProgressNotification();
|
||||
openProgressNotification(PID);
|
||||
Log.v(TAG, "Looking for progress notification details: '" + name + "-" + percent + "'");
|
||||
mUiBot.getObject(name);
|
||||
mUiBot.getObject(percent);
|
||||
}
|
||||
|
||||
private void openProgressNotification() {
|
||||
String title = mContext.getString(R.string.bugreport_in_progress_title);
|
||||
private void openProgressNotification(int pid) {
|
||||
String title = mContext.getString(R.string.bugreport_in_progress_title, pid);
|
||||
Log.v(TAG, "Looking for progress notification title: '" + title + "'");
|
||||
mUiBot.getNotification(title);
|
||||
}
|
||||
@@ -494,7 +500,7 @@ public class BugreportReceiverTest extends InstrumentationTestCase {
|
||||
*/
|
||||
private Bundle sendBugreportFinishedAndGetSharedIntent(String bugreportPath,
|
||||
String screenshotPath) {
|
||||
return sendBugreportFinishedAndGetSharedIntent(null, bugreportPath, screenshotPath);
|
||||
return sendBugreportFinishedAndGetSharedIntent(NO_PID, bugreportPath, screenshotPath);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -502,10 +508,10 @@ public class BugreportReceiverTest extends InstrumentationTestCase {
|
||||
*
|
||||
* @return extras sent in the shared intent.
|
||||
*/
|
||||
private Bundle sendBugreportFinishedAndGetSharedIntent(Integer pid, String bugreportPath,
|
||||
private Bundle sendBugreportFinishedAndGetSharedIntent(int pid, String bugreportPath,
|
||||
String screenshotPath) {
|
||||
sendBugreportFinished(pid, bugreportPath, screenshotPath);
|
||||
return acceptBugreportAndGetSharedIntent();
|
||||
return acceptBugreportAndGetSharedIntent(pid);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -513,8 +519,8 @@ public class BugreportReceiverTest extends InstrumentationTestCase {
|
||||
*
|
||||
* @return extras sent in the shared intent.
|
||||
*/
|
||||
private Bundle acceptBugreportAndGetSharedIntent() {
|
||||
acceptBugreport();
|
||||
private Bundle acceptBugreportAndGetSharedIntent(int pid) {
|
||||
acceptBugreport(pid);
|
||||
mUiBot.chooseActivity(UI_NAME);
|
||||
return mListener.getExtras();
|
||||
}
|
||||
@@ -522,24 +528,24 @@ public class BugreportReceiverTest extends InstrumentationTestCase {
|
||||
/**
|
||||
* Waits for the notification to share the finished bugreport.
|
||||
*/
|
||||
private void waitShareNotification() {
|
||||
mUiBot.getNotification(mContext.getString(R.string.bugreport_finished_title));
|
||||
private void waitShareNotification(int pid) {
|
||||
mUiBot.getNotification(mContext.getString(R.string.bugreport_finished_title, pid));
|
||||
}
|
||||
|
||||
/**
|
||||
* Accepts the notification to share the finished bugreport.
|
||||
*/
|
||||
private void acceptBugreport() {
|
||||
mUiBot.clickOnNotification(mContext.getString(R.string.bugreport_finished_title));
|
||||
private void acceptBugreport(int pid) {
|
||||
mUiBot.clickOnNotification(mContext.getString(R.string.bugreport_finished_title, pid));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends a "bugreport finished" intent.
|
||||
*/
|
||||
private void sendBugreportFinished(Integer pid, String bugreportPath, String screenshotPath) {
|
||||
private void sendBugreportFinished(int pid, String bugreportPath, String screenshotPath) {
|
||||
Intent intent = new Intent(INTENT_BUGREPORT_FINISHED);
|
||||
intent.setFlags(Intent.FLAG_RECEIVER_FOREGROUND);
|
||||
if (pid != null) {
|
||||
if (pid != NO_PID) {
|
||||
intent.putExtra(EXTRA_PID, pid);
|
||||
}
|
||||
if (bugreportPath != null) {
|
||||
@@ -775,7 +781,7 @@ public class BugreportReceiverTest extends InstrumentationTestCase {
|
||||
* Gets the notification button used to take a screenshot.
|
||||
*/
|
||||
private UiObject getScreenshotButton() {
|
||||
openProgressNotification();
|
||||
openProgressNotification(PID);
|
||||
return mUiBot.getVisibleObject(
|
||||
mContext.getString(R.string.bugreport_screenshot_action).toUpperCase());
|
||||
}
|
||||
@@ -827,12 +833,15 @@ public class BugreportReceiverTest extends InstrumentationTestCase {
|
||||
/**
|
||||
* Gets the UI objects by opening the progress notification and clicking DETAILS.
|
||||
*/
|
||||
DetailsUi(UiBot uiBot) {
|
||||
openProgressNotification();
|
||||
DetailsUi(UiBot uiBot, int pid) throws UiObjectNotFoundException {
|
||||
openProgressNotification(pid);
|
||||
detailsButton = mUiBot.getVisibleObject(
|
||||
mContext.getString(R.string.bugreport_info_action).toUpperCase());
|
||||
mUiBot.click(detailsButton, "details_button");
|
||||
// TODO: unhardcode resource ids
|
||||
UiObject dialogTitle = mUiBot.getVisibleObjectById("android:id/alertTitle");
|
||||
assertEquals("Wrong title", mContext.getString(R.string.bugreport_info_dialog_title,
|
||||
pid), dialogTitle.getText().toString());
|
||||
nameField = mUiBot.getVisibleObjectById("com.android.shell:id/name");
|
||||
titleField = mUiBot.getVisibleObjectById("com.android.shell:id/title");
|
||||
descField = mUiBot.getVisibleObjectById("com.android.shell:id/description");
|
||||
@@ -849,7 +858,7 @@ public class BugreportReceiverTest extends InstrumentationTestCase {
|
||||
}
|
||||
|
||||
void reOpen() {
|
||||
openProgressNotification();
|
||||
openProgressNotification(PID);
|
||||
mUiBot.click(detailsButton, "details_button");
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user