diff options
author | Tor Norbye <tnorbye@google.com> | 2012-12-03 10:03:07 -0800 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2012-12-03 10:27:54 -0800 |
commit | 32654dfbd134559fbf6bec4542d6a4a8105897c9 (patch) | |
tree | fc8563ab428eef9d9759421283cb88643dce05b9 /eclipse/plugins/com.android.ide.eclipse.tests/src/com/android | |
parent | 6c7924f6fea737bf5c87c1a6b845d690b8c46099 (diff) | |
download | sdk-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')
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( |