LAUNCH: Set device root on automatically when launching project 74/13174/1
authordonghyuk.yang <donghyuk.yang@samsung.com>
Thu, 28 Nov 2013 05:06:07 +0000 (14:06 +0900)
committerdonghyuk.yang <donghyuk.yang@samsung.com>
Thu, 28 Nov 2013 05:06:07 +0000 (14:06 +0900)
Set device root on automatically using sdb API (becomeSuperUser). User
does not need to set manually device root on from now.

Change-Id: I41cea2c41302165b90fe1ec687c0ecbd71a9dc4a
Signed-off-by: donghyuk.yang <donghyuk.yang@samsung.com>
org.tizen.nativeplatform/src/org/tizen/nativeplatform/launch/ui/shortcut/PlatformProjectCommonLaunchShortcut.java
org.tizen.nativeplatform/src/org/tizen/nativeplatform/pkg/commander/rpm/RpmPackageLauncher.java
org.tizen.nativeplatform/src/org/tizen/nativeplatform/util/PlatformLaunchUtil.java

index 87153d9..108827a 100644 (file)
@@ -126,7 +126,7 @@ abstract public class PlatformProjectCommonLaunchShortcut extends CApplicationLa
         }
         // device root should be on only when normal debugging.
         if (needCheckDeviceRootOn()) {
-            if (!device.isRoot()) {
+            if (!PlatformLaunchUtil.checkDeviceRootOn(device)) {
                 DialogUtil.openErrorDialog(PlatformLaunchMessages.DEVICE_IS_NOT_ROOT_ON);
                 return;
             }
index a4681df..b83e6a6 100644 (file)
 
 package org.tizen.nativeplatform.pkg.commander.rpm;
 
+import java.io.IOException;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.SubProgressMonitor;
 import org.eclipse.jface.window.Window;
 import org.eclipse.swt.widgets.Shell;
@@ -45,6 +43,7 @@ import org.tizen.common.util.SWTUtil;
 import org.tizen.common.util.log.UserInteraction;
 import org.tizen.common.util.log.UserLogger;
 import org.tizen.nativecommon.launch.TizenLaunchMessages;
+import org.tizen.nativeplatform.indexer.DefaultIncludePathImporter;
 import org.tizen.nativeplatform.launch.PlatformLaunchMessages;
 import org.tizen.nativeplatform.launch.wizards.ShowPackageStatusDialog;
 import org.tizen.nativeplatform.pkg.commander.ICommandStatus;
@@ -63,7 +62,10 @@ import org.tizen.nativeplatform.rootstrap.RootstrapManager;
 import org.tizen.nativeplatform.types.CmdTargetTypes;
 import org.tizen.nativeplatform.types.LaunchTypes;
 import org.tizen.nativeplatform.types.PkgInstallTypes;
+import org.tizen.nativeplatform.util.PlatformLaunchUtil;
 import org.tizen.nativeplatform.util.PlatformProjectUtil;
+import org.tizen.sdblib.exception.SdbCommandRejectedException;
+import org.tizen.sdblib.exception.TimeoutException;
 import org.tizen.sdblib.util.DeviceUtil;
 
 public class RpmPackageLauncher implements IPkgLauncher {
@@ -75,6 +77,8 @@ public class RpmPackageLauncher implements IPkgLauncher {
     private boolean reinstallOp;
     private List<IPackage> packages;
     private boolean result = false;
+    
+    private final Logger logger = LoggerFactory.getLogger(RpmPackageLauncher.class);
 
     public RpmPackageLauncher(IProject project, PkgCommandTarget target, List<IPackage> packages,
             boolean reinstallOp, boolean selectPkgOp) {
@@ -299,7 +303,7 @@ public class RpmPackageLauncher implements IPkgLauncher {
             IProgressMonitor monitor, boolean useRds) throws InterruptedException {
         if (!DeviceUtil.isOnline(target.getDevice())) {
             newInterruptedException(TizenLaunchMessages.CANNOT_CONNECT_TO_DEVICE);
-        } else if (!target.getDevice().isRoot()) {
+        } else if (!PlatformLaunchUtil.checkDeviceRootOn(target.getDevice())) {
             newInterruptedException(PlatformLaunchMessages.DEVICE_IS_NOT_ROOT_ON);
         } else {
             PkgMgrInitializer initializer = new PkgMgrInitializer(target);
index 2924ad9..bd34f4d 100644 (file)
@@ -47,6 +47,8 @@ import org.eclipse.swt.widgets.MessageBox;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PlatformUI;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.tizen.common.TizenPlatformConstants;
 import org.tizen.common.connection.ConnectionPlugin;
 import org.tizen.common.connection.ui.TizenRemoteFileDialog;
@@ -75,6 +77,23 @@ public class PlatformLaunchUtil {
     public static final String GDB_PACKAGE = "gdb";
     public static final String AUL_PACKAGE = "aul";
 
+    private static final Logger logger = LoggerFactory.getLogger(PlatformLaunchUtil.class);
+
+    public static boolean checkDeviceRootOn(IDevice device) {
+        if (!device.isRoot()) {
+            try {
+                if (!device.becomeSuperUser(true)) {
+                    return false;
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+                logger.error(PlatformLaunchMessages.DEVICE_IS_NOT_ROOT_ON, e);
+                return false;
+            }
+        }
+        return true;
+    }
+
     public static Shell getAvaiableShell() {
         IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
         if (window == null) {