diff options
author | Eugene Kudelevsky <Eugene.Kudelevsky@jetbrains.com> | 2013-08-06 20:45:13 +0400 |
---|---|---|
committer | Eugene Kudelevsky <Eugene.Kudelevsky@jetbrains.com> | 2013-08-06 20:45:13 +0400 |
commit | 673ce11d1e787bdfd0ca181006d3480e6e0d9eb9 (patch) | |
tree | ae403e3d0c332a4cc7603d4bf2dd635c227b6d0d | |
parent | b05260e5e14b8d108cfca477eb484be00d95a9d6 (diff) | |
download | idea-673ce11d1e787bdfd0ca181006d3480e6e0d9eb9.tar.gz |
IDEA-111650 filter intent actions and categories to complete
15 files changed, 473 insertions, 5 deletions
diff --git a/android/src/org/jetbrains/android/dom/converters/ConstantFieldConverter.java b/android/src/org/jetbrains/android/dom/converters/ConstantFieldConverter.java index a64507da46c..6d0b4f679d0 100644 --- a/android/src/org/jetbrains/android/dom/converters/ConstantFieldConverter.java +++ b/android/src/org/jetbrains/android/dom/converters/ConstantFieldConverter.java @@ -15,6 +15,7 @@ */ package org.jetbrains.android.dom.converters; +import com.android.sdklib.IAndroidTarget; import com.intellij.codeInsight.lookup.LookupElementBuilder; import com.intellij.openapi.module.Module; import com.intellij.openapi.util.Pair; @@ -28,6 +29,9 @@ import com.intellij.util.containers.HashSet; import com.intellij.util.xml.*; import org.jetbrains.android.dom.LookupClass; import org.jetbrains.android.dom.LookupPrefix; +import org.jetbrains.android.dom.manifest.*; +import org.jetbrains.android.sdk.AndroidPlatform; +import org.jetbrains.android.sdk.AndroidTargetData; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -67,21 +71,66 @@ public class ConstantFieldConverter extends Converter<String> implements CustomR getProject()).findClass(lookupClass.value(), scope); if (psiClass != null) { - result.add(new MyReference(element, psiClass, lookupPrefix.value())); + final Set<String> filteringSet = getFilteringSet(context); + result.add(new MyReference(element, psiClass, lookupPrefix.value(), filteringSet)); } } return result.toArray(new PsiReference[result.size()]); } + @Nullable + private static Set<String> getFilteringSet(@NotNull ConvertContext context) { + final Module module = context.getModule(); + + if (module == null) { + return null; + } + final AndroidPlatform platform = AndroidPlatform.getInstance(module); + + if (platform == null) { + return null; + } + final IAndroidTarget target = platform.getTarget(); + final AndroidTargetData targetData = platform.getSdkData().getTargetData(target); + DomElement element = context.getInvocationElement().getParent(); + + if (element instanceof Category) { + return targetData.getStaticConstantsData().getCategories(); + } + else if (element instanceof Action) { + element = element.getParent(); + + if (element instanceof IntentFilter) { + element = element.getParent(); + + if (element instanceof Activity) { + return targetData.getStaticConstantsData().getActivityActions(); + } + else if (element instanceof Service) { + return targetData.getStaticConstantsData().getServiceActions(); + } + else if (element instanceof Receiver) { + return targetData.getStaticConstantsData().getReceiverActions(); + } + } + } + return null; + } + private static class MyReference extends PsiReferenceBase<PsiElement> { private final PsiClass myClass; private final String myLookupPrefix; + private final Set<String> myFilteringSet; - public MyReference(@NotNull PsiElement element, @NotNull PsiClass aClass, @NotNull String lookupPrefix) { + public MyReference(@NotNull PsiElement element, + @NotNull PsiClass aClass, + @NotNull String lookupPrefix, + @Nullable Set<String> filteringSet) { super(element, true); myClass = aClass; myLookupPrefix = lookupPrefix; + myFilteringSet = filteringSet; } @Nullable @@ -129,6 +178,9 @@ public class ConstantFieldConverter extends Converter<String> implements CustomR public boolean process(Pair<PsiField, String> pair) { final String s = pair.getSecond(); + if (myFilteringSet != null && !myFilteringSet.contains(s)) { + return true; + } if (added.add(s)) { result.add(LookupElementBuilder.create(pair.getFirst(), s)); } diff --git a/android/src/org/jetbrains/android/sdk/AndroidTargetData.java b/android/src/org/jetbrains/android/sdk/AndroidTargetData.java index 18b61d2622c..2305a6f19f4 100644 --- a/android/src/org/jetbrains/android/sdk/AndroidTargetData.java +++ b/android/src/org/jetbrains/android/sdk/AndroidTargetData.java @@ -24,9 +24,10 @@ import org.jetbrains.android.uipreview.RenderingException; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.io.BufferedReader; +import java.io.FileReader; import java.io.IOException; -import java.util.Map; -import java.util.Set; +import java.util.*; /** * @author Eugene.Kudelevsky @@ -43,6 +44,8 @@ public class AndroidTargetData { private final Object myPublicResourceCacheLock = new Object(); private volatile Map<String, Set<String>> myPublicResourceCache; + private volatile MyStaticConstantsData myStaticConstantsData; + public AndroidTargetData(@NotNull AndroidSdkData sdkData, @NotNull IAndroidTarget target) { mySdkData = sdkData; myTarget = target; @@ -156,6 +159,14 @@ public class AndroidTargetData { return xmlFiles; } + @NotNull + public synchronized MyStaticConstantsData getStaticConstantsData() { + if (myStaticConstantsData == null) { + myStaticConstantsData = new MyStaticConstantsData(); + } + return myStaticConstantsData; + } + private class PublicAttributeDefinitions extends FilteredAttributeDefinitions { protected PublicAttributeDefinitions(@NotNull AttributeDefinitions wrappee) { super(wrappee); @@ -208,4 +219,65 @@ public class AndroidTargetData { return myResult; } } + + public class MyStaticConstantsData { + private final Set<String> myActivityActions; + private final Set<String> myServiceActions; + private final Set<String> myReceiverActions; + private final Set<String> myCategories; + + private MyStaticConstantsData() { + myActivityActions = collectValues(IAndroidTarget.ACTIONS_ACTIVITY); + myServiceActions = collectValues(IAndroidTarget.ACTIONS_SERVICE); + myReceiverActions = collectValues(IAndroidTarget.ACTIONS_BROADCAST); + myCategories = collectValues(IAndroidTarget.CATEGORIES); + } + + @Nullable + public Set<String> getActivityActions() { + return myActivityActions; + } + + @Nullable + public Set<String> getServiceActions() { + return myServiceActions; + } + + @Nullable + public Set<String> getReceiverActions() { + return myReceiverActions; + } + + @Nullable + public Set<String> getCategories() { + return myCategories; + } + + @Nullable + private Set<String> collectValues(int pathId) { + final Set<String> result = new HashSet<String>(); + try { + final BufferedReader reader = new BufferedReader(new FileReader(myTarget.getPath(pathId))); + + try { + String line; + + while ((line = reader.readLine()) != null) { + line = line.trim(); + + if (line.length() > 0 && !line.startsWith("#")) { + result.add(line); + } + } + } + finally { + reader.close(); + } + } + catch (IOException e) { + return null; + } + return result; + } + } } diff --git a/android/testData/dom/manifest/IntentActionCompletion1.xml b/android/testData/dom/manifest/IntentActionCompletion1.xml new file mode 100644 index 00000000000..27e9b2ba26e --- /dev/null +++ b/android/testData/dom/manifest/IntentActionCompletion1.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="p1.p2"> + <application android:icon="@drawable/picture1"> + <activity> + <intent-filter> + <action android:name="android.intent.action.CA<caret>"/> + </intent-filter> + </activity> + </application> +</manifest> diff --git a/android/testData/dom/manifest/IntentActionCompletion2.xml b/android/testData/dom/manifest/IntentActionCompletion2.xml new file mode 100644 index 00000000000..6d59eff1d09 --- /dev/null +++ b/android/testData/dom/manifest/IntentActionCompletion2.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="p1.p2"> + <application android:icon="@drawable/picture1"> + <receiver> + <intent-filter> + <action android:name="android.intent.action.CA<caret>"/> + </intent-filter> + </receiver> + </application> +</manifest> diff --git a/android/testData/dom/manifest/IntentActionCompletion3.xml b/android/testData/dom/manifest/IntentActionCompletion3.xml new file mode 100644 index 00000000000..0668940f32b --- /dev/null +++ b/android/testData/dom/manifest/IntentActionCompletion3.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="p1.p2"> + <application android:icon="@drawable/picture1"> + <service> + <intent-filter> + <action android:name="<caret>"/> + </intent-filter> + </service> + </application> +</manifest> diff --git a/android/testData/dom/manifest/IntentActionDoc2.xml b/android/testData/dom/manifest/IntentActionDoc2.xml new file mode 100644 index 00000000000..ad0669860d5 --- /dev/null +++ b/android/testData/dom/manifest/IntentActionDoc2.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="p1.p2"> + <application android:icon="@drawable/picture1"> + <service> + <intent-filter> + <action android:name="android.intent.action.CALL_BUTT<caret>ON"/> + </intent-filter> + </service> + </application> +</manifest> diff --git a/android/testData/dom/manifest/IntentCategoryCompletion.xml b/android/testData/dom/manifest/IntentCategoryCompletion.xml new file mode 100644 index 00000000000..2116bab29cf --- /dev/null +++ b/android/testData/dom/manifest/IntentCategoryCompletion.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="p1.p2"> + <application android:icon="@drawable/picture1"> + <activity> + <intent-filter> + <category android:name="android.intent.category.T<caret>"/> + </intent-filter> + </activity> + </application> +</manifest> diff --git a/android/testData/dom/manifest/IntentCategoryCompletion_after.xml b/android/testData/dom/manifest/IntentCategoryCompletion_after.xml new file mode 100644 index 00000000000..251f46c40bf --- /dev/null +++ b/android/testData/dom/manifest/IntentCategoryCompletion_after.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="p1.p2"> + <application android:icon="@drawable/picture1"> + <activity> + <intent-filter> + <category android:name="android.intent.category.TAB"/> + </intent-filter> + </activity> + </application> +</manifest> diff --git a/android/testData/dom/manifest/IntentCategoryDoc2.xml b/android/testData/dom/manifest/IntentCategoryDoc2.xml new file mode 100644 index 00000000000..4576aafe309 --- /dev/null +++ b/android/testData/dom/manifest/IntentCategoryDoc2.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="p1.p2"> + <application android:icon="@drawable/picture1"> + <activity> + <intent-filter> + <category android:name="android.intent.category.TES<caret>T" + </intent-filter> + </activity> + </application> +</manifest> diff --git a/android/testData/dom/manifest/intentsCompletion2_after.xml b/android/testData/dom/manifest/intentsCompletion2_after.xml index 8eb309fdb2e..2d32d88eca2 100644 --- a/android/testData/dom/manifest/intentsCompletion2_after.xml +++ b/android/testData/dom/manifest/intentsCompletion2_after.xml @@ -4,7 +4,7 @@ <application android:label="@string/app_name"> <service> <intent-filter> - <action android:name="android.intent.action.BOOT_COMPLETED" /> + <action android:name="android.intent.action.BOOT_COMPL<caret>" /> </intent-filter> </service> </application> diff --git a/android/testData/sdk1.5/platforms/android-1.5/data/activity_actions.txt b/android/testData/sdk1.5/platforms/android-1.5/data/activity_actions.txt new file mode 100644 index 00000000000..4b7436a072a --- /dev/null +++ b/android/testData/sdk1.5/platforms/android-1.5/data/activity_actions.txt @@ -0,0 +1,89 @@ +android.app.action.ADD_DEVICE_ADMIN +android.app.action.SET_NEW_PASSWORD +android.app.action.START_ENCRYPTION +android.bluetooth.adapter.action.REQUEST_DISCOVERABLE +android.bluetooth.adapter.action.REQUEST_ENABLE +android.intent.action.ALL_APPS +android.intent.action.ANSWER +android.intent.action.APP_ERROR +android.intent.action.ASSIST +android.intent.action.ATTACH_DATA +android.intent.action.BUG_REPORT +android.intent.action.CALL +android.intent.action.CALL_BUTTON +android.intent.action.CHOOSER +android.intent.action.CREATE_LIVE_FOLDER +android.intent.action.CREATE_SHORTCUT +android.intent.action.DELETE +android.intent.action.DIAL +android.intent.action.EDIT +android.intent.action.EVENT_REMINDER +android.intent.action.GET_CONTENT +android.intent.action.INSERT +android.intent.action.INSERT_OR_EDIT +android.intent.action.INSTALL_PACKAGE +android.intent.action.MAIN +android.intent.action.MANAGE_NETWORK_USAGE +android.intent.action.MEDIA_SEARCH +android.intent.action.MUSIC_PLAYER +android.intent.action.PASTE +android.intent.action.PICK +android.intent.action.PICK_ACTIVITY +android.intent.action.POWER_USAGE_SUMMARY +android.intent.action.RINGTONE_PICKER +android.intent.action.RUN +android.intent.action.SEARCH +android.intent.action.SEARCH_LONG_PRESS +android.intent.action.SEND +android.intent.action.SENDTO +android.intent.action.SEND_MULTIPLE +android.intent.action.SET_ALARM +android.intent.action.SET_WALLPAPER +android.intent.action.SYNC +android.intent.action.SYSTEM_TUTORIAL +android.intent.action.UNINSTALL_PACKAGE +android.intent.action.VIEW +android.intent.action.VOICE_COMMAND +android.intent.action.WEB_SEARCH +android.media.action.DISPLAY_AUDIO_EFFECT_CONTROL_PANEL +android.net.wifi.PICK_WIFI_NETWORK +android.nfc.action.NDEF_DISCOVERED +android.nfc.action.TAG_DISCOVERED +android.nfc.action.TECH_DISCOVERED +android.provider.calendar.action.HANDLE_CUSTOM_EVENT +android.search.action.SEARCH_SETTINGS +android.settings.ACCESSIBILITY_SETTINGS +android.settings.ADD_ACCOUNT_SETTINGS +android.settings.AIRPLANE_MODE_SETTINGS +android.settings.APN_SETTINGS +android.settings.APPLICATION_DETAILS_SETTINGS +android.settings.APPLICATION_DEVELOPMENT_SETTINGS +android.settings.APPLICATION_SETTINGS +android.settings.BLUETOOTH_SETTINGS +android.settings.DATA_ROAMING_SETTINGS +android.settings.DATE_SETTINGS +android.settings.DEVICE_INFO_SETTINGS +android.settings.DISPLAY_SETTINGS +android.settings.INPUT_METHOD_SETTINGS +android.settings.INPUT_METHOD_SUBTYPE_SETTINGS +android.settings.INTERNAL_STORAGE_SETTINGS +android.settings.LOCALE_SETTINGS +android.settings.LOCATION_SOURCE_SETTINGS +android.settings.MANAGE_ALL_APPLICATIONS_SETTINGS +android.settings.MANAGE_APPLICATIONS_SETTINGS +android.settings.MEMORY_CARD_SETTINGS +android.settings.NETWORK_OPERATOR_SETTINGS +android.settings.NFCSHARING_SETTINGS +android.settings.NFC_SETTINGS +android.settings.PRIVACY_SETTINGS +android.settings.QUICK_LAUNCH_SETTINGS +android.settings.SECURITY_SETTINGS +android.settings.SETTINGS +android.settings.SOUND_SETTINGS +android.settings.SYNC_SETTINGS +android.settings.USER_DICTIONARY_SETTINGS +android.settings.WIFI_IP_SETTINGS +android.settings.WIFI_SETTINGS +android.settings.WIRELESS_SETTINGS +android.speech.tts.engine.CHECK_TTS_DATA +android.speech.tts.engine.INSTALL_TTS_DATA diff --git a/android/testData/sdk1.5/platforms/android-1.5/data/broadcast_actions.txt b/android/testData/sdk1.5/platforms/android-1.5/data/broadcast_actions.txt new file mode 100644 index 00000000000..a2308407793 --- /dev/null +++ b/android/testData/sdk1.5/platforms/android-1.5/data/broadcast_actions.txt @@ -0,0 +1,120 @@ +android.app.action.ACTION_PASSWORD_CHANGED +android.app.action.ACTION_PASSWORD_EXPIRING +android.app.action.ACTION_PASSWORD_FAILED +android.app.action.ACTION_PASSWORD_SUCCEEDED +android.app.action.DEVICE_ADMIN_DISABLED +android.app.action.DEVICE_ADMIN_DISABLE_REQUESTED +android.app.action.DEVICE_ADMIN_ENABLED +android.bluetooth.a2dp.profile.action.CONNECTION_STATE_CHANGED +android.bluetooth.a2dp.profile.action.PLAYING_STATE_CHANGED +android.bluetooth.adapter.action.CONNECTION_STATE_CHANGED +android.bluetooth.adapter.action.DISCOVERY_FINISHED +android.bluetooth.adapter.action.DISCOVERY_STARTED +android.bluetooth.adapter.action.LOCAL_NAME_CHANGED +android.bluetooth.adapter.action.SCAN_MODE_CHANGED +android.bluetooth.adapter.action.STATE_CHANGED +android.bluetooth.device.action.ACL_CONNECTED +android.bluetooth.device.action.ACL_DISCONNECTED +android.bluetooth.device.action.ACL_DISCONNECT_REQUESTED +android.bluetooth.device.action.BOND_STATE_CHANGED +android.bluetooth.device.action.CLASS_CHANGED +android.bluetooth.device.action.FOUND +android.bluetooth.device.action.NAME_CHANGED +android.bluetooth.device.action.UUID +android.bluetooth.devicepicker.action.DEVICE_SELECTED +android.bluetooth.devicepicker.action.LAUNCH +android.bluetooth.headset.action.VENDOR_SPECIFIC_HEADSET_EVENT +android.bluetooth.headset.profile.action.AUDIO_STATE_CHANGED +android.bluetooth.headset.profile.action.CONNECTION_STATE_CHANGED +android.bluetooth.input.profile.action.CONNECTION_STATE_CHANGED +android.bluetooth.pan.profile.action.CONNECTION_STATE_CHANGED +android.hardware.action.NEW_PICTURE +android.hardware.action.NEW_VIDEO +android.hardware.input.action.QUERY_KEYBOARD_LAYOUTS +android.intent.action.ACTION_POWER_CONNECTED +android.intent.action.ACTION_POWER_DISCONNECTED +android.intent.action.ACTION_SHUTDOWN +android.intent.action.AIRPLANE_MODE +android.intent.action.BATTERY_CHANGED +android.intent.action.BATTERY_LOW +android.intent.action.BATTERY_OKAY +android.intent.action.BOOT_COMPLETED +android.intent.action.CAMERA_BUTTON +android.intent.action.CONFIGURATION_CHANGED +android.intent.action.DATE_CHANGED +android.intent.action.DEVICE_STORAGE_LOW +android.intent.action.DEVICE_STORAGE_OK +android.intent.action.DOCK_EVENT +android.intent.action.DREAMING_STARTED +android.intent.action.DREAMING_STOPPED +android.intent.action.EXTERNAL_APPLICATIONS_AVAILABLE +android.intent.action.EXTERNAL_APPLICATIONS_UNAVAILABLE +android.intent.action.FETCH_VOICEMAIL +android.intent.action.GTALK_CONNECTED +android.intent.action.GTALK_DISCONNECTED +android.intent.action.HEADSET_PLUG +android.intent.action.INPUT_METHOD_CHANGED +android.intent.action.LOCALE_CHANGED +android.intent.action.MANAGE_PACKAGE_STORAGE +android.intent.action.MEDIA_BAD_REMOVAL +android.intent.action.MEDIA_BUTTON +android.intent.action.MEDIA_CHECKING +android.intent.action.MEDIA_EJECT +android.intent.action.MEDIA_MOUNTED +android.intent.action.MEDIA_NOFS +android.intent.action.MEDIA_REMOVED +android.intent.action.MEDIA_SCANNER_FINISHED +android.intent.action.MEDIA_SCANNER_SCAN_FILE +android.intent.action.MEDIA_SCANNER_STARTED +android.intent.action.MEDIA_SHARED +android.intent.action.MEDIA_UNMOUNTABLE +android.intent.action.MEDIA_UNMOUNTED +android.intent.action.MY_PACKAGE_REPLACED +android.intent.action.NEW_OUTGOING_CALL +android.intent.action.NEW_VOICEMAIL +android.intent.action.PACKAGE_ADDED +android.intent.action.PACKAGE_CHANGED +android.intent.action.PACKAGE_DATA_CLEARED +android.intent.action.PACKAGE_FIRST_LAUNCH +android.intent.action.PACKAGE_FULLY_REMOVED +android.intent.action.PACKAGE_INSTALL +android.intent.action.PACKAGE_NEEDS_VERIFICATION +android.intent.action.PACKAGE_REMOVED +android.intent.action.PACKAGE_REPLACED +android.intent.action.PACKAGE_RESTARTED +android.intent.action.PACKAGE_VERIFIED +android.intent.action.PHONE_STATE +android.intent.action.PROVIDER_CHANGED +android.intent.action.PROXY_CHANGE +android.intent.action.REBOOT +android.intent.action.SCREEN_OFF +android.intent.action.SCREEN_ON +android.intent.action.TIMEZONE_CHANGED +android.intent.action.TIME_SET +android.intent.action.TIME_TICK +android.intent.action.UID_REMOVED +android.intent.action.USER_PRESENT +android.intent.action.WALLPAPER_CHANGED +android.media.ACTION_SCO_AUDIO_STATE_UPDATED +android.media.AUDIO_BECOMING_NOISY +android.media.RINGER_MODE_CHANGED +android.media.SCO_AUDIO_STATE_CHANGED +android.media.VIBRATE_SETTING_CHANGED +android.media.action.CLOSE_AUDIO_EFFECT_CONTROL_SESSION +android.media.action.OPEN_AUDIO_EFFECT_CONTROL_SESSION +android.net.conn.BACKGROUND_DATA_SETTING_CHANGED +android.net.nsd.STATE_CHANGED +android.net.wifi.NETWORK_IDS_CHANGED +android.net.wifi.RSSI_CHANGED +android.net.wifi.SCAN_RESULTS +android.net.wifi.STATE_CHANGE +android.net.wifi.WIFI_STATE_CHANGED +android.net.wifi.p2p.CONNECTION_STATE_CHANGE +android.net.wifi.p2p.DISCOVERY_STATE_CHANGE +android.net.wifi.p2p.PEERS_CHANGED +android.net.wifi.p2p.STATE_CHANGED +android.net.wifi.p2p.THIS_DEVICE_CHANGED +android.net.wifi.supplicant.CONNECTION_CHANGE +android.net.wifi.supplicant.STATE_CHANGE +android.speech.tts.TTS_QUEUE_PROCESSING_COMPLETED +android.speech.tts.engine.TTS_DATA_INSTALLED diff --git a/android/testData/sdk1.5/platforms/android-1.5/data/categories.txt b/android/testData/sdk1.5/platforms/android-1.5/data/categories.txt new file mode 100644 index 00000000000..9d0a688bd7a --- /dev/null +++ b/android/testData/sdk1.5/platforms/android-1.5/data/categories.txt @@ -0,0 +1,28 @@ +android.intent.category.ALTERNATIVE +android.intent.category.APP_BROWSER +android.intent.category.APP_CALCULATOR +android.intent.category.APP_CALENDAR +android.intent.category.APP_CONTACTS +android.intent.category.APP_EMAIL +android.intent.category.APP_GALLERY +android.intent.category.APP_MAPS +android.intent.category.APP_MARKET +android.intent.category.APP_MESSAGING +android.intent.category.APP_MUSIC +android.intent.category.BROWSABLE +android.intent.category.CAR_DOCK +android.intent.category.CAR_MODE +android.intent.category.DEFAULT +android.intent.category.DESK_DOCK +android.intent.category.DEVELOPMENT_PREFERENCE +android.intent.category.EMBED +android.intent.category.HE_DESK_DOCK +android.intent.category.HOME +android.intent.category.INFO +android.intent.category.LAUNCHER +android.intent.category.LE_DESK_DOCK +android.intent.category.MONKEY +android.intent.category.OPENABLE +android.intent.category.PREFERENCE +android.intent.category.SELECTED_ALTERNATIVE +android.intent.category.TAB diff --git a/android/testData/sdk1.5/platforms/android-1.5/data/service_actions.txt b/android/testData/sdk1.5/platforms/android-1.5/data/service_actions.txt new file mode 100644 index 00000000000..c9cdc63b070 --- /dev/null +++ b/android/testData/sdk1.5/platforms/android-1.5/data/service_actions.txt @@ -0,0 +1 @@ +_
\ No newline at end of file diff --git a/android/testSrc/org/jetbrains/android/dom/AndroidManifestDomTest.java b/android/testSrc/org/jetbrains/android/dom/AndroidManifestDomTest.java index c387d6e5bb3..7481a53f326 100644 --- a/android/testSrc/org/jetbrains/android/dom/AndroidManifestDomTest.java +++ b/android/testSrc/org/jetbrains/android/dom/AndroidManifestDomTest.java @@ -181,6 +181,29 @@ public class AndroidManifestDomTest extends AndroidDomTest { doTestExternalDoc("The user pressed the \"call\" button to go to the dialer"); } + public void testIntentActionDoc2() throws Throwable { + myFixture.configureFromExistingVirtualFile( + copyFileToProject(getTestName(false) + ".xml")); + doTestExternalDoc("The user pressed the \"call\" button to go to the dialer"); + } + + public void testIntentActionCompletion1() throws Throwable { + doTestCompletionVariants(getTestName(false) + ".xml", "android.intent.action.CALL", "android.intent.action.CALL_BUTTON"); + } + + public void testIntentActionCompletion2() throws Throwable { + doTestCompletionVariants(getTestName(false) + ".xml","android.intent.action.CAMERA_BUTTON", + "android.intent.action.NEW_OUTGOING_CALL"); + } + + public void testIntentActionCompletion3() throws Throwable { + doTestCompletionVariants(getTestName(false) + ".xml"); + } + + public void testIntentCategoryCompletion() throws Throwable { + doTestCompletion(false); + } + public void testIntentCategoryDoc() throws Throwable { myFixture.configureFromExistingVirtualFile( copyFileToProject(getTestName(false) + ".xml")); @@ -195,6 +218,12 @@ public class AndroidManifestDomTest extends AndroidDomTest { doTestExternalDoc("The activity should be able to browse the Internet."); } + public void testIntentCategoryDoc2() throws Throwable { + myFixture.configureFromExistingVirtualFile( + copyFileToProject(getTestName(false) + ".xml")); + doTestExternalDoc("To be used as a test"); + } + public void testApplicationNameCompletion() throws Throwable { copyFileToProject("MyApplication.java", "src/p1/p2/MyApplication.java"); doTestCompletion(false); |