Abolish source code overlay and inroduce overridable src dir

This should make IDEs happy with appropriate source code directory
selection.

bug: 16829244
Change-Id: Ic734bd4d20aa050c688a3158b1a382ae0ac18991
diff --git a/java/src/com/android/inputmethod/compat/AppWorkaroundsHelper.java b/java-overridable/src/com/android/inputmethod/compat/AppWorkaroundsHelper.java
similarity index 100%
rename from java/src/com/android/inputmethod/compat/AppWorkaroundsHelper.java
rename to java-overridable/src/com/android/inputmethod/compat/AppWorkaroundsHelper.java
diff --git a/java/src/com/android/inputmethod/dictionarypack/DictionaryPackConstants.java b/java-overridable/src/com/android/inputmethod/dictionarypack/DictionaryPackConstants.java
similarity index 100%
rename from java/src/com/android/inputmethod/dictionarypack/DictionaryPackConstants.java
rename to java-overridable/src/com/android/inputmethod/dictionarypack/DictionaryPackConstants.java
diff --git a/java/src/com/android/inputmethod/dictionarypack/MetadataUriGetter.java b/java-overridable/src/com/android/inputmethod/dictionarypack/MetadataUriGetter.java
similarity index 100%
rename from java/src/com/android/inputmethod/dictionarypack/MetadataUriGetter.java
rename to java-overridable/src/com/android/inputmethod/dictionarypack/MetadataUriGetter.java
diff --git a/java/src/com/android/inputmethod/latin/SpecialKeyDetector.java b/java-overridable/src/com/android/inputmethod/latin/SpecialKeyDetector.java
similarity index 100%
rename from java/src/com/android/inputmethod/latin/SpecialKeyDetector.java
rename to java-overridable/src/com/android/inputmethod/latin/SpecialKeyDetector.java
diff --git a/java/src/com/android/inputmethod/latin/about/AboutPreferences.java b/java-overridable/src/com/android/inputmethod/latin/about/AboutPreferences.java
similarity index 100%
rename from java/src/com/android/inputmethod/latin/about/AboutPreferences.java
rename to java-overridable/src/com/android/inputmethod/latin/about/AboutPreferences.java
diff --git a/java/src/com/android/inputmethod/latin/define/DebugFlags.java b/java-overridable/src/com/android/inputmethod/latin/define/DebugFlags.java
similarity index 100%
rename from java/src/com/android/inputmethod/latin/define/DebugFlags.java
rename to java-overridable/src/com/android/inputmethod/latin/define/DebugFlags.java
diff --git a/java/src/com/android/inputmethod/latin/define/JniLibName.java b/java-overridable/src/com/android/inputmethod/latin/define/JniLibName.java
similarity index 100%
rename from java/src/com/android/inputmethod/latin/define/JniLibName.java
rename to java-overridable/src/com/android/inputmethod/latin/define/JniLibName.java
diff --git a/java/src/com/android/inputmethod/latin/define/ProductionFlags.java b/java-overridable/src/com/android/inputmethod/latin/define/ProductionFlags.java
similarity index 100%
rename from java/src/com/android/inputmethod/latin/define/ProductionFlags.java
rename to java-overridable/src/com/android/inputmethod/latin/define/ProductionFlags.java
diff --git a/java/src/com/android/inputmethod/latin/personalization/ContextualDictionaryUpdater.java b/java-overridable/src/com/android/inputmethod/latin/personalization/ContextualDictionaryUpdater.java
similarity index 100%
rename from java/src/com/android/inputmethod/latin/personalization/ContextualDictionaryUpdater.java
rename to java-overridable/src/com/android/inputmethod/latin/personalization/ContextualDictionaryUpdater.java
diff --git a/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryUpdater.java b/java-overridable/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryUpdater.java
similarity index 100%
rename from java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryUpdater.java
rename to java-overridable/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryUpdater.java
diff --git a/java/src/com/android/inputmethod/latin/settings/AdditionalFeaturesSettingUtils.java b/java-overridable/src/com/android/inputmethod/latin/settings/AdditionalFeaturesSettingUtils.java
similarity index 100%
rename from java/src/com/android/inputmethod/latin/settings/AdditionalFeaturesSettingUtils.java
rename to java-overridable/src/com/android/inputmethod/latin/settings/AdditionalFeaturesSettingUtils.java
diff --git a/java/src/com/android/inputmethod/latin/utils/FeedbackUtils.java b/java-overridable/src/com/android/inputmethod/latin/utils/FeedbackUtils.java
similarity index 100%
rename from java/src/com/android/inputmethod/latin/utils/FeedbackUtils.java
rename to java-overridable/src/com/android/inputmethod/latin/utils/FeedbackUtils.java
diff --git a/java/src/com/android/inputmethod/latin/utils/FileTransforms.java b/java-overridable/src/com/android/inputmethod/latin/utils/FileTransforms.java
similarity index 100%
rename from java/src/com/android/inputmethod/latin/utils/FileTransforms.java
rename to java-overridable/src/com/android/inputmethod/latin/utils/FileTransforms.java
diff --git a/java/src/com/android/inputmethod/latin/utils/MetadataFileUriGetter.java b/java-overridable/src/com/android/inputmethod/latin/utils/MetadataFileUriGetter.java
similarity index 100%
rename from java/src/com/android/inputmethod/latin/utils/MetadataFileUriGetter.java
rename to java-overridable/src/com/android/inputmethod/latin/utils/MetadataFileUriGetter.java
diff --git a/java/src/com/android/inputmethod/latin/utils/StatsUtils.java b/java-overridable/src/com/android/inputmethod/latin/utils/StatsUtils.java
similarity index 100%
rename from java/src/com/android/inputmethod/latin/utils/StatsUtils.java
rename to java-overridable/src/com/android/inputmethod/latin/utils/StatsUtils.java
diff --git a/java/Android.mk b/java/Android.mk
index 9b8b2b4..0d12c45 100644
--- a/java/Android.mk
+++ b/java/Android.mk
@@ -17,7 +17,7 @@
 
 LOCAL_MODULE_TAGS := optional
 
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
+LOCAL_SRC_FILES := $(call all-java-files-under, src ../java-overridable/src)
 
 LOCAL_PACKAGE_NAME := LatinIME
 
diff --git a/tools/dicttool/Android.mk b/tools/dicttool/Android.mk
index 0f1f344..3e3d419 100644
--- a/tools/dicttool/Android.mk
+++ b/tools/dicttool/Android.mk
@@ -32,10 +32,12 @@
 include $(CLEAR_VARS)
 
 LATINIME_LOCAL_DIR := ../..
-LATINIME_BASE_SOURCE_DIRECTORY := $(LATINIME_LOCAL_DIR)/java/src/com/android/inputmethod
-LATINIME_ANNOTATIONS_SOURCE_DIRECTORY := $(LATINIME_BASE_SOURCE_DIRECTORY)/annotations
-MAKEDICT_CORE_SOURCE_DIRECTORY := $(LATINIME_BASE_SOURCE_DIRECTORY)/latin/makedict
-LATINIME_TESTS_SOURCE_DIRECTORY := $(LATINIME_LOCAL_DIR)/tests/src/com/android/inputmethod/latin
+LATINIME_BASE_SRC_DIR := $(LATINIME_LOCAL_DIR)/java/src/com/android/inputmethod
+LATINIME_BASE_OVERRIDABLE_SRC_DIR := \
+        $(LATINIME_LOCAL_DIR)/java-overridable/src/com/android/inputmethod
+LATINIME_ANNOTATIONS_SRC_DIR := $(LATINIME_BASE_SRC_DIR)/annotations
+MAKEDICT_CORE_SRC_DIR := $(LATINIME_BASE_SRC_DIR)/latin/makedict
+LATINIME_TESTS_SRC_DIR := $(LATINIME_LOCAL_DIR)/tests/src/com/android/inputmethod/latin
 
 # Dependencies for Dicttool. Most of these files are needed by BinaryDictionary.java. Note that
 # a significant part of the dependencies are mocked in the compat/ directory, with empty or
@@ -51,7 +53,6 @@
         latin/PrevWordsInfo.java \
         latin/SuggestedWords.java \
         latin/WordComposer.java \
-        latin/define/DebugFlags.java \
         latin/settings/NativeSuggestOptions.java \
         latin/settings/SettingsValuesForSuggestion.java \
         latin/utils/BinaryDictionaryUtils.java \
@@ -63,29 +64,33 @@
         latin/utils/ResizableIntArray.java \
         latin/utils/StringUtils.java
 
+LATINIME_OVERRIDABLE_SRC_FILES_FOR_DICTTOOL := \
+        latin/define/DebugFlags.java
+
 LATINIME_TEST_SRC_FILES_FOR_DICTTOOL := \
         utils/ByteArrayDictBuffer.java
 
-USED_TARGETED_SRCS := \
-        $(addprefix $(LATINIME_BASE_SOURCE_DIRECTORY)/, $(LATINIME_SRC_FILES_FOR_DICTTOOL)) \
-        $(addprefix $(LATINIME_TESTS_SOURCE_DIRECTORY)/, $(LATINIME_TEST_SRC_FILES_FOR_DICTTOOL))
+USED_TARGETED_SRC_FILES := \
+        $(addprefix $(LATINIME_BASE_SRC_DIR)/, $(LATINIME_SRC_FILES_FOR_DICTTOOL)) \
+        $(addprefix $(LATINIME_BASE_OVERRIDABLE_SRC_DIR)/, \
+                $(LATINIME_OVERRIDABLE_SRC_FILES_FOR_DICTTOOL)) \
+        $(addprefix $(LATINIME_TESTS_SRC_DIR)/, $(LATINIME_TEST_SRC_FILES_FOR_DICTTOOL))
 
-DICTTOOL_ONDEVICE_TESTS_DIRECTORY := \
+DICTTOOL_ONDEVICE_TESTS_DIR := \
         $(LATINIME_LOCAL_DIR)/tests/src/com/android/inputmethod/latin/makedict/
-DICTTOOL_COMPAT_TESTS_DIRECTORY := compat
+DICTTOOL_COMPAT_TESTS_DIR := compat
 
-LOCAL_MAIN_SRC_FILES := $(call all-java-files-under, $(MAKEDICT_CORE_SOURCE_DIRECTORY))
+LOCAL_MAIN_SRC_FILES := $(call all-java-files-under, $(MAKEDICT_CORE_SRC_DIR))
 LOCAL_TOOL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_ANNOTATIONS_SRC_FILES := \
-        $(call all-java-files-under, $(LATINIME_ANNOTATIONS_SOURCE_DIRECTORY))
+LOCAL_ANNOTATIONS_SRC_FILES := $(call all-java-files-under, $(LATINIME_ANNOTATIONS_SRC_DIR))
 
 LOCAL_SRC_FILES := $(LOCAL_TOOL_SRC_FILES) \
         $(filter-out $(addprefix %/, $(notdir $(LOCAL_TOOL_SRC_FILES))), $(LOCAL_MAIN_SRC_FILES)) \
-        $(call all-java-files-under, $(DICTTOOL_COMPAT_TESTS_DIRECTORY)) \
-        $(LOCAL_ANNOTATIONS_SRC_FILES) $(USED_TARGETED_SRCS) \
-        $(LATINIME_BASE_SOURCE_DIRECTORY)/latin/Constants.java \
+        $(call all-java-files-under, $(DICTTOOL_COMPAT_TESTS_DIR)) \
+        $(LOCAL_ANNOTATIONS_SRC_FILES) $(USED_TARGETED_SRC_FILES) \
+        $(LATINIME_BASE_SRC_DIR)/latin/Constants.java \
         $(call all-java-files-under, tests) \
-        $(call all-java-files-under, $(DICTTOOL_ONDEVICE_TESTS_DIRECTORY))
+        $(call all-java-files-under, $(DICTTOOL_ONDEVICE_TESTS_DIR))
 
 LOCAL_JAVA_LIBRARIES := junit
 LOCAL_STATIC_JAVA_LIBRARIES := jsr305lib