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

Commit d625e495 authored by Pinyao Ting's avatar Pinyao Ting
Browse files

include integration test for adding shortcut widget

this integration test help us catching app crashes when adding shortcut
widgets to the workplace. see b/141568904 for more context.

Bug: 141934188
Change-Id: I4d33d6127793efe2071d0d146aef24db6b676360
parent 4a4755fc
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -62,6 +62,12 @@
                <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
            </intent-filter>
        </activity>
        <activity android:name="com.android.launcher3.testcomponent.ShortcutWidgetConfigActivity">
            <intent-filter>
                <action android:name="android.intent.action.CREATE_SHORTCUT" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.android.launcher3.testcomponent.RequestPinItemActivity"
            android:icon="@drawable/test_drawable_pin_item"
+62 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2019 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.launcher3.testcomponent;

import android.content.Context;
import android.content.Intent;
import android.content.pm.ShortcutInfo;
import android.content.pm.ShortcutManager;
import android.graphics.drawable.Icon;
import android.os.Bundle;

import com.android.launcher3.R;

import java.util.UUID;

public class ShortcutWidgetConfigActivity extends BaseTestingActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent launchIntent = new Intent(this, BaseTestingActivity.class)
                .setAction("com.android.launcher3.intent.action.test_shortcut");
        Intent shortcutIntent = createShortcutResultIntent(
                this, UUID.randomUUID().toString(), "Shortcut",
                R.drawable.ic_widget, launchIntent);
        setResult(RESULT_OK, shortcutIntent);
        finish();
    }

    private static Intent createShortcutResultIntent(
            Context context, String uniqueId, String name, int iconId, Intent launchIntent) {
        ShortcutInfo shortcutInfo =
                createShortcutInfo(context, uniqueId, name, iconId, launchIntent);
        ShortcutManager sm = context.getSystemService(ShortcutManager.class);
        return sm.createShortcutResultIntent(shortcutInfo);
    }

    private static ShortcutInfo createShortcutInfo(
            Context context, String uniqueId, String name, int iconId, Intent launchIntent) {
        return new ShortcutInfo.Builder(context, uniqueId)
                .setShortLabel(name)
                .setLongLabel(name)
                .setIcon(Icon.createWithResource(context, iconId))
                .setIntent(launchIntent)
                .build();
    }
}
+9 −0
Original line number Diff line number Diff line
@@ -342,6 +342,15 @@ public class TaplTestsLauncher3 extends AbstractLauncherUiTest {
        }
    }

    @Test
    public void testDragShortcutWidget() {
        mLauncher.getWorkspace().openAllWidgets()
                .getWidget("com.android.launcher3.testcomponent.ShortcutWidgetConfigActivity")
                .dragToWorkspace();
        mLauncher.getWorkspace().getWorkspaceAppIcon("Shortcut")
                .launch(getAppPackageName());
    }

    public static String getAppPackageName() {
        return getInstrumentation().getContext().getPackageName();
    }