aboutsummaryrefslogtreecommitdiffstats
path: root/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2012-12-03 10:03:07 -0800
committerTor Norbye <tnorbye@google.com>2012-12-03 10:27:54 -0800
commit32654dfbd134559fbf6bec4542d6a4a8105897c9 (patch)
treefc8563ab428eef9d9759421283cb88643dce05b9 /eclipse/plugins/com.android.ide.eclipse.tests/src/com/android
parent6c7924f6fea737bf5c87c1a6b845d690b8c46099 (diff)
downloadsdk-32654dfbd134559fbf6bec4542d6a4a8105897c9.zip
sdk-32654dfbd134559fbf6bec4542d6a4a8105897c9.tar.gz
sdk-32654dfbd134559fbf6bec4542d6a4a8105897c9.tar.bz2
Fix rename type, rename package and move type refactorings
This CL updates the various refactorings to properly handle layout refactoring such that it not only updates custom views, but also updates fragment references, tool:context references etc. It also fixes missing manifest updates (such as replacing the parentActivityName attributes). Most importantly, it also fixes bugs where the wrong elements in the manifest could get updated. There are a lot of diffs in this CL because I basically replaced the old refactoring code (which had a lot of custom text change and document manipulation code) with code based on the new resource refactoring, where there is a single iteration of the XML documents. This also improves the emitted refactoring elements such that it only lists each file once. Also updated the unit tests to check additional scenarios; adding a second activity with the same prefix as the first is what revealed the broken document handling in the old code. Change-Id: I7c5959ca6b046ce3dab566663988cdd0389b0e5b
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.tests/src/com/android')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/refactorings/core/AndroidPackageRenameParticipantTest.java31
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/refactorings/core/RefactoringTestBase.java70
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/refactorings/core/RenameResourceParticipantTest.java19
3 files changed, 98 insertions, 22 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/refactorings/core/AndroidPackageRenameParticipantTest.java b/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/refactorings/core/AndroidPackageRenameParticipantTest.java
index ec9d324..a074146 100644
--- a/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/refactorings/core/AndroidPackageRenameParticipantTest.java
+++ b/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/refactorings/core/AndroidPackageRenameParticipantTest.java
@@ -49,10 +49,19 @@ public class AndroidPackageRenameParticipantTest extends RefactoringTestBase {
" +\n" +
"\n" +
"\n" +
+ "* activity_main.xml - /testRefactor1/res/layout/activity_main.xml\n" +
+ " @@ -33 +33\n" +
+ " - <fragment android:name=\"com.example.refactoringtest.MyFragment\"/>\n" +
+ " + <fragment android:name=\"my.pkg.name.MyFragment\"/>\n" +
+ "\n" +
+ "\n" +
"* AndroidManifest.xml - /testRefactor1/AndroidManifest.xml\n" +
" @@ -16 +16\n" +
" - android:name=\"com.example.refactoringtest.MainActivity\"\n" +
- " + android:name=\"my.pkg.name.MainActivity\"");
+ " + android:name=\"my.pkg.name.MainActivity\"\n" +
+ " @@ -25 +25\n" +
+ " - android:name=\".MainActivity2\"\n" +
+ " + android:name=\"my.pkg.name.MainActivity2\"");
}
public void testRefactor1_noreferences() throws Exception {
@@ -91,6 +100,12 @@ public class AndroidPackageRenameParticipantTest extends RefactoringTestBase {
" + <my.pkg.name.CustomView1\n" +
"\n" +
"\n" +
+ "* activity_main.xml - /testRefactor2/res/layout/activity_main.xml\n" +
+ " @@ -33 +33\n" +
+ " - <fragment android:name=\"com.example.refactoringtest.MyFragment\"/>\n" +
+ " + <fragment android:name=\"my.pkg.name.MyFragment\"/>\n" +
+ "\n" +
+ "\n" +
"* customviews.xml - /testRefactor2/res/layout-land/customviews.xml\n" +
" @@ -9 +9\n" +
" - <com.example.refactoringtest.CustomView1\n" +
@@ -100,7 +115,10 @@ public class AndroidPackageRenameParticipantTest extends RefactoringTestBase {
"* AndroidManifest.xml - /testRefactor2/AndroidManifest.xml\n" +
" @@ -16 +16\n" +
" - android:name=\"com.example.refactoringtest.MainActivity\"\n" +
- " + android:name=\"my.pkg.name.MainActivity\"");
+ " + android:name=\"my.pkg.name.MainActivity\"\n" +
+ " @@ -25 +25\n" +
+ " - android:name=\".MainActivity2\"\n" +
+ " + android:name=\"my.pkg.name.MainActivity2\"");
}
public void testRefactor2_renamesub() throws Exception {
@@ -127,6 +145,12 @@ public class AndroidPackageRenameParticipantTest extends RefactoringTestBase {
" + <my.pkg.name.CustomView1\n" +
"\n" +
"\n" +
+ "* activity_main.xml - /testRefactor2_renamesub/res/layout/activity_main.xml\n" +
+ " @@ -33 +33\n" +
+ " - <fragment android:name=\"com.example.refactoringtest.MyFragment\"/>\n" +
+ " + <fragment android:name=\"my.pkg.name.MyFragment\"/>\n" +
+ "\n" +
+ "\n" +
"* customviews.xml - /testRefactor2_renamesub/res/layout-land/customviews.xml\n" +
" @@ -9 +9\n" +
" - <com.example.refactoringtest.CustomView1\n" +
@@ -137,6 +161,9 @@ public class AndroidPackageRenameParticipantTest extends RefactoringTestBase {
" @@ -16 +16\n" +
" - android:name=\"com.example.refactoringtest.MainActivity\"\n" +
" + android:name=\"my.pkg.name.MainActivity\"\n" +
+ " @@ -25 +25\n" +
+ " - android:name=\".MainActivity2\"\n" +
+ " + android:name=\"my.pkg.name.MainActivity2\"\n" +
"\n" +
"\n" +
"* customviews.xml - /testRefactor2_renamesub/res/layout/customviews.xml\n" +
diff --git a/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/refactorings/core/RefactoringTestBase.java b/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/refactorings/core/RefactoringTestBase.java
index 93c3489..44fb522 100644
--- a/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/refactorings/core/RefactoringTestBase.java
+++ b/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/refactorings/core/RefactoringTestBase.java
@@ -19,10 +19,6 @@ import com.android.annotations.NonNull;
import com.android.annotations.Nullable;
import com.android.ide.eclipse.adt.AdtUtils;
import com.android.ide.eclipse.adt.internal.editors.layout.refactoring.AdtProjectTest;
-import com.android.ide.eclipse.adt.internal.refactorings.changes.AndroidDocumentChange;
-import com.android.ide.eclipse.adt.internal.refactorings.changes.AndroidLayoutChange;
-import com.android.ide.eclipse.adt.internal.refactorings.changes.AndroidPackageRenameChange;
-import com.android.ide.eclipse.adt.internal.refactorings.changes.AndroidTypeRenameChange;
import com.google.common.base.Charsets;
import com.google.common.base.Splitter;
import com.google.common.io.ByteStreams;
@@ -133,10 +129,7 @@ public abstract class RefactoringTestBase extends AdtProjectTest {
sb.append('\n');
}
- if (change instanceof TextFileChange
- || change instanceof AndroidPackageRenameChange
- || change instanceof AndroidTypeRenameChange
- || change instanceof AndroidLayoutChange) {
+ if (change instanceof TextFileChange) {
assertNotNull(file);
if (file != null) {
TextChange tc = (TextChange) change;
@@ -221,18 +214,6 @@ public abstract class RefactoringTestBase extends AdtProjectTest {
if (change instanceof TextFileChange) {
TextFileChange tfc = (TextFileChange) change;
return tfc.getFile();
- } else if (change instanceof AndroidPackageRenameChange) {
- AndroidPackageRenameChange aprc = (AndroidPackageRenameChange) change;
- return aprc.getManifest();
- } else if (change instanceof AndroidTypeRenameChange) {
- AndroidTypeRenameChange aprc = (AndroidTypeRenameChange) change;
- return aprc.getManifest();
- } else if (change instanceof AndroidLayoutChange) {
- AndroidLayoutChange alc = (AndroidLayoutChange) change;
- return alc.getFile();
- } else if (change instanceof AndroidDocumentChange) {
- AndroidDocumentChange atmc = (AndroidDocumentChange) change;
- return atmc.getManifest();
}
return null;
@@ -293,6 +274,10 @@ public abstract class RefactoringTestBase extends AdtProjectTest {
" <category android:name=\"android.intent.category.LAUNCHER\" />\n" +
" </intent-filter>\n" +
" </activity>\n" +
+ " <activity\n" +
+ " android:name=\".MainActivity2\"\n" +
+ " android:label=\"@string/app_name2\" >\n" +
+ " </activity>\n" +
" </application>\n" +
"\n" +
"</manifest>";
@@ -323,6 +308,31 @@ public abstract class RefactoringTestBase extends AdtProjectTest {
"\n" +
"}\n";
+ protected static final String SAMPLE_MAIN_ACTIVITY2 =
+ "package com.example.refactoringtest;\n" +
+ "\n" +
+ "import android.os.Bundle;\n" +
+ "import android.app.Activity;\n" +
+ "import android.view.Menu;\n" +
+ "import android.view.View;\n" +
+ "\n" +
+ "public class MainActivity2 extends Activity {\n" +
+ "\n" +
+ " @Override\n" +
+ " protected void onCreate(Bundle savedInstanceState) {\n" +
+ " super.onCreate(savedInstanceState);\n" +
+ " }\n" +
+ "\n" +
+ "}\n";
+
+ protected static final String MY_FRAGMENT =
+ "package com.example.refactoringtest;\n" +
+ "import android.support.v4.app.ListFragment;\n" +
+ "\n" +
+ "public class MyFragment extends ListFragment {\n" +
+ "\n" +
+ "}\n";
+
protected static final String SAMPLE_LAYOUT =
"<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n" +
" xmlns:tools=\"http://schemas.android.com/tools\"\n" +
@@ -356,6 +366,8 @@ public abstract class RefactoringTestBase extends AdtProjectTest {
" android:layout_alignParentTop=\"true\"\n" +
" android:text=\"Button\" />\n" +
"\n" +
+ " <fragment android:name=\"com.example.refactoringtest.MyFragment\"/>" +
+ "\n" +
"</RelativeLayout>";
protected static final String SAMPLE_LAYOUT_2 =
@@ -365,6 +377,18 @@ public abstract class RefactoringTestBase extends AdtProjectTest {
" android:layout_height=\"match_parent\"\n" +
" tools:context=\".MainActivity\" >\n" +
"\n" +
+ " <ListView\n" +
+ " android:layout_width=\"match_parent\"\n" +
+ " android:layout_height=\"wrap_content\"\n" +
+ " tools:listitem=\"@layout/preview\" >\n" +
+ " </ListView>\n" +
+ "\n" +
+ " <fragment\n" +
+ " android:name=\"android.support.v4.app.ListFragment\"\n" +
+ " android:layout_width=\"wrap_content\"\n" +
+ " android:layout_height=\"wrap_content\"\n" +
+ " tools:layout=\"@layout/preview\" />\n" +
+ "\n" +
"\n" +
"</RelativeLayout>";
@@ -482,6 +506,9 @@ public abstract class RefactoringTestBase extends AdtProjectTest {
"src/com/example/refactoringtest/MainActivity.java",
SAMPLE_MAIN_ACTIVITY,
+ "src/com/example/refactoringtest/MainActivity2.java",
+ SAMPLE_MAIN_ACTIVITY2,
+
"gen/com/example/refactoringtest/R.java",
SAMPLE_R,
@@ -572,6 +599,9 @@ public abstract class RefactoringTestBase extends AdtProjectTest {
"src/com/example/refactoringtest/subpackage/CustomView2.java",
CUSTOM_VIEW_2,
+ "src/com/example/refactoringtest/MyFragment.java",
+ MY_FRAGMENT,
+
"gen/com/example/refactoringtest/R.java",
SAMPLE_R,
diff --git a/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/refactorings/core/RenameResourceParticipantTest.java b/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/refactorings/core/RenameResourceParticipantTest.java
index b783f8d..3a6859c 100644
--- a/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/refactorings/core/RenameResourceParticipantTest.java
+++ b/eclipse/plugins/com.android.ide.eclipse.tests/src/com/android/ide/eclipse/adt/internal/refactorings/core/RenameResourceParticipantTest.java
@@ -311,6 +311,25 @@ public class RenameResourceParticipantTest extends RefactoringTestBase {
" + public static final int output=0x7f070000;");
}
+ public void testRefactor10() throws Exception {
+ // Check updating tools: attributes
+ renameResource(
+ TEST_PROJECT,
+ "@layout/preview",
+ true /*updateReferences*/,
+ "newlayout",
+
+ "CHANGES:\n" +
+ "-------\n" +
+ "* activity_main.xml - /testRefactor10/res/layout-land/activity_main.xml\n" +
+ " @@ -10 +10\n" +
+ " - tools:listitem=\"@layout/preview\" >\n" +
+ " + tools:listitem=\"@layout/newlayout\" >\n" +
+ " @@ -17 +17\n" +
+ " - tools:layout=\"@layout/preview\" />\n" +
+ " + tools:layout=\"@layout/newlayout\" />");
+ }
+
// ---- Test infrastructure ----
protected void renameResource(