Snap for 9365619 from 089ebf624b9adf64a9cfdd33fb73bff01aab9b65 to studio-flamingo-release
Change-Id: I1fba7c0b868e61866211b69cdf93b31f28a7b4de
diff --git a/BUILD b/BUILD
index 28de5c3..914753f 100644
--- a/BUILD
+++ b/BUILD
@@ -32,5 +32,7 @@
"//tools/adt/idea/project-system:intellij.android.projectSystem[module]",
"//tools/adt/idea/project-system-gradle:intellij.android.projectSystem.gradle[module]",
"//tools/adt/idea/project-system-gradle-models:intellij.android.projectSystem.gradle.models[module]",
+ "//tools/adt/idea/execution/common:intellij.android.execution.common[module]",
+ "//tools/adt/idea/artwork:intellij.android.artwork[module]",
],
)
diff --git a/google-appindexing.iml b/google-appindexing.iml
index 2a6d1ea..d5d8bfe 100644
--- a/google-appindexing.iml
+++ b/google-appindexing.iml
@@ -37,5 +37,7 @@
<orderEntry type="module" module-name="intellij.android.projectSystem" />
<orderEntry type="module" module-name="intellij.android.projectSystem.gradle" />
<orderEntry type="module" module-name="intellij.android.projectSystem.gradle.models" />
+ <orderEntry type="module" module-name="intellij.android.execution.common" />
+ <orderEntry type="module" module-name="intellij.android.artwork" />
</component>
</module>
\ No newline at end of file
diff --git a/src/com/google/appindexing/ui/AppIndexingResultPanel.java b/src/com/google/appindexing/ui/AppIndexingResultPanel.java
index 9beffe8..cd5bedc 100644
--- a/src/com/google/appindexing/ui/AppIndexingResultPanel.java
+++ b/src/com/google/appindexing/ui/AppIndexingResultPanel.java
@@ -15,17 +15,17 @@
*/
package com.google.appindexing.ui;
+import com.android.ddmlib.AdbCommandRejectedException;
import com.android.ddmlib.AndroidDebugBridge;
import com.android.ddmlib.IDevice;
+import com.android.ddmlib.ShellCommandUnresponsiveException;
+import com.android.ddmlib.TimeoutException;
import com.android.tools.idea.adb.AdbService;
import com.android.tools.idea.concurrency.FutureCallbackExecutor;
-import com.android.tools.idea.run.AndroidProcessHandler;
+import com.android.tools.idea.execution.common.adb.shell.ErrorMatchingReceiver;
import com.android.tools.idea.run.DeviceCount;
import com.android.tools.idea.run.DeviceSelectionUtils;
-import com.android.tools.idea.run.ProcessHandlerConsolePrinter;
import com.android.tools.idea.run.TargetDeviceFilter;
-import com.android.tools.idea.run.tasks.ShellCommandLauncher;
-import com.android.tools.idea.run.util.ProcessHandlerLaunchStatus;
import com.google.api.services.fetchasgoogle_pa.model.AppIndexingStats;
import com.google.appindexing.fetchasgoogle.FetchAsGoogleTask;
import com.google.appindexing.util.AppIndexingBundle;
@@ -33,12 +33,14 @@
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.intellij.icons.AllIcons;
+import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.ui.HyperlinkLabel;
import com.intellij.ui.components.JBLabel;
import com.intellij.util.concurrency.EdtExecutorService;
import java.awt.BorderLayout;
import java.io.File;
+import java.io.IOException;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.Executors;
@@ -64,7 +66,7 @@
private JBLabel myPackageLabel;
private JBLabel myUrlTitle;
private JPanel myDetailPanel;
- private FetchAsGoogleTask myTask;
+ private final FetchAsGoogleTask myTask;
private AppIndexingResultPanel(@NotNull FetchAsGoogleTask task, @NotNull String deepLink) {
super(new BorderLayout());
@@ -76,11 +78,6 @@
fillPanelContent();
}
- @NotNull
- public static AppIndexingResultPanel buildPanelFromFetchTask(@NotNull FetchAsGoogleTask task, @NotNull String deepLink) {
- return new AppIndexingResultPanel(task, deepLink);
- }
-
private void initializeTitle(@NotNull FetchAsGoogleTask task, @NotNull String deepLink) {
myPackageLabel.setText(task.getPackageId());
myDateLabel.setText(task.getCreatedTime().toString());
@@ -247,25 +244,23 @@
}
IDevice device = collection.iterator().next();
- AndroidProcessHandler androidProcessHandler = new AndroidProcessHandler(facet.getModule().getProject(), myTask.getPackageId());
- androidProcessHandler.addTargetDevice(device);
FutureCallbackExecutor f = FutureCallbackExecutor.wrap(Executors.newSingleThreadExecutor());
- ListenableFuture<Boolean> launchResult =
- f.executeAsync(() -> ShellCommandLauncher.execute("am start -a \"com.google.android.gms.icing.APP_INDEXING_DEBUG\"", device,
- new ProcessHandlerLaunchStatus(androidProcessHandler),
- new ProcessHandlerConsolePrinter(androidProcessHandler), 10,
- TimeUnit.SECONDS));
- Futures.addCallback(launchResult, new FutureCallback<Boolean>() {
- @Override
- public void onSuccess(Boolean result) {
- setOpenDeveloperToolResult(result, collapsablePanel);
- }
- @Override
- public void onFailure(@NotNull Throwable t) {
- setOpenDeveloperToolResult(false, collapsablePanel);
+
+ ApplicationManager.getApplication().executeOnPooledThread(() -> {
+ ErrorMatchingReceiver receiver = new ErrorMatchingReceiver();
+ try {
+ device.executeShellCommand("am start -a \"com.google.android.gms.icing.APP_INDEXING_DEBUG\"",
+ receiver,
+ 10,
+ TimeUnit.SECONDS);
}
- }, EdtExecutorService.getInstance());
+ catch (TimeoutException | AdbCommandRejectedException | ShellCommandUnresponsiveException | IOException e) {
+ setOpenDeveloperToolResult(false, collapsablePanel);
+ return;
+ }
+ setOpenDeveloperToolResult(!receiver.hasError(), collapsablePanel);
+ });
}
private void setOpenDeveloperToolResult(@Nullable Boolean succeeded, @NotNull CollapsablePanel collapsablePanel) {
@@ -276,4 +271,9 @@
collapsablePanel.setActionErrorMessage(
(succeeded != null && succeeded) ? "" : AppIndexingBundle.message("app.indexing.open.developer.tool.fail.message"));
}
+
+ @NotNull
+ public static AppIndexingResultPanel buildPanelFromFetchTask(@NotNull FetchAsGoogleTask task, @NotNull String deepLink) {
+ return new AppIndexingResultPanel(task, deepLink);
+ }
}
diff --git a/src/com/google/appindexing/ui/InsertApiCodeDialog.java b/src/com/google/appindexing/ui/InsertApiCodeDialog.java
index c7f9a81..481a308 100644
--- a/src/com/google/appindexing/ui/InsertApiCodeDialog.java
+++ b/src/com/google/appindexing/ui/InsertApiCodeDialog.java
@@ -20,7 +20,6 @@
import com.google.appindexing.api.ApiCreator;
import com.google.appindexing.util.AppIndexingBundle;
import com.google.urlassistant.ActivityData;
-import com.google.urlassistant.UrlAssistIcons;
import com.google.urlassistant.util.ManifestUtils;
import com.google.wireless.android.sdk.stats.AndroidStudioEvent;
import com.intellij.ide.BrowserUtil;
@@ -44,13 +43,22 @@
import com.intellij.ui.components.JBScrollPane;
import com.intellij.uiDesigner.core.GridConstraints;
import com.intellij.uiDesigner.core.GridLayoutManager;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import javax.swing.*;
-import java.awt.*;
+import icons.StudioIcons;
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.Dimension;
import java.awt.event.MouseEvent;
import java.util.List;
+import javax.swing.AbstractListModel;
+import javax.swing.Action;
+import javax.swing.BorderFactory;
+import javax.swing.JComponent;
+import javax.swing.JList;
+import javax.swing.JPanel;
+import javax.swing.JTextPane;
+import javax.swing.ListSelectionModel;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
/**
* A dialog to select activity for code inserting.
@@ -90,7 +98,7 @@
GridConstraints constraints = new GridConstraints();
constraints.setAnchor(GridConstraints.ANCHOR_WEST);
JBLabel iconLabel = new JBLabel();
- iconLabel.setIcon(UrlAssistIcons.FAIL_ICON);
+ iconLabel.setIcon(StudioIcons.Common.ERROR);
myMessagePanel.add(iconLabel, constraints);
constraints.setColumn(1);