Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 75f37009 authored by Felipe Leme's avatar Felipe Leme Committed by android-build-merger
Browse files

Merge "Add pid on main bugreport notifications." into nyc-dev

am: 000b8445

* commit '000b8445':
  Add pid on main bugreport notifications.
parents 9ebeee82 000b8445
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -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] -->
+3 −3
Original line number Diff line number Diff line
@@ -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)
+44 −35
Original line number Diff line number Diff line
@@ -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");

        }