Settings - add support for Launch by Default

- implement UX spec

Change-Id: I7ee8962f83983273d809e0ef6fc81b0eb2df15dd
diff --git a/res/layout/app_domains_dialog.xml b/res/layout/app_domains_dialog.xml
new file mode 100644
index 0000000..c00bff0
--- /dev/null
+++ b/res/layout/app_domains_dialog.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+             android:layout_width="match_parent"
+             android:layout_height="match_parent"
+             android:paddingStart="24dp"
+             android:paddingTop="16dp"
+             android:paddingEnd="24dp">
+
+    <ListView
+            android:id="@android:id/list"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:scrollbarStyle="insideOverlay" />
+
+</FrameLayout>
diff --git a/res/layout/app_domains_item.xml b/res/layout/app_domains_item.xml
new file mode 100644
index 0000000..90fc0e4
--- /dev/null
+++ b/res/layout/app_domains_item.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/domain_name"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingStart="4dp"
+    android:paddingEnd="4dp"
+    android:paddingTop="16dp"
+    />
diff --git a/res/layout/app_preferred_settings.xml b/res/layout/app_preferred_settings.xml
index 533887d..2e54068 100644
--- a/res/layout/app_preferred_settings.xml
+++ b/res/layout/app_preferred_settings.xml
@@ -23,7 +23,6 @@
     android:scrollbarStyle="@integer/preference_scrollbar_style">
 
     <LinearLayout
-        android:id="@+id/all_details"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:paddingStart="?android:attr/listPreferredItemPaddingStart"
@@ -31,52 +30,19 @@
         android:paddingBottom="5dip"
         android:orientation="vertical">
 
-        <!-- Prefered activities section -->
-        <TextView android:id="@+id/auto_launch_title"
-            style="?android:attr/listSeparatorTextViewStyle"
-            android:layout_marginTop="8dip"
-            android:text="@string/auto_launch_label" />
-
-        <RelativeLayout
+        <TextView android:id="@+id/auto_launch"
+            android:textAppearance="?android:attr/textAppearanceSmall"
+            android:layout_alignParentStart="true"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_gravity="center_vertical"
-            android:paddingStart="?android:attr/listPreferredItemPaddingStart"
-            android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
+            android:paddingTop="6dip" />
 
-            <TextView android:id="@+id/auto_launch"
-                android:textAppearance="?android:attr/textAppearanceSmall"
-                android:layout_alignParentStart="true"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:paddingTop="6dip" />
-
-            <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_below="@id/auto_launch"
-                android:paddingTop="4dip"
-                android:orientation="horizontal">
-
-                <View
-                    android:layout_width="120dip"
-                    android:layout_height="0dip"
-                    android:layout_weight="0.4" />
-                <View
-                    android:layout_width="0dip"
-                    android:layout_height="0dip"
-                    android:visibility="invisible"
-                    android:layout_weight="0.2" />
-                <Button
-                    android:id="@+id/clear_activities_button"
-                    android:layout_width="120dip"
-                    android:layout_height="wrap_content"
-                    android:layout_weight="0.4"
-                    android:text="@string/clear_activities" />
-
-            </LinearLayout>
-
-        </RelativeLayout>
+        <Button
+            android:id="@+id/clear_activities_button"
+            android:layout_marginStart="-4dip"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/clear_activities" />
 
     </LinearLayout>
 
diff --git a/res/layout/default_apps_view.xml b/res/layout/default_apps_view.xml
new file mode 100644
index 0000000..3c8cc29
--- /dev/null
+++ b/res/layout/default_apps_view.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical">
+
+    <FrameLayout
+            android:layout_width="match_parent"
+            android:layout_height="0px"
+            android:layout_weight="1">
+
+        <ListView android:id="@android:id/list"
+                style="@style/PreferenceFragmentListSinglePane"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:drawSelectorOnTop="false"
+                android:scrollbarStyle="outsideOverlay"
+                android:fastScrollEnabled="true" />
+
+        <TextView android:id="@android:id/empty"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:gravity="center"
+                android:text="@string/no_default_apps"
+                android:textAppearance="?android:attr/textAppearanceLarge" />
+
+    </FrameLayout>
+
+</LinearLayout>
diff --git a/res/layout/default_apps_view_item.xml b/res/layout/default_apps_view_item.xml
new file mode 100644
index 0000000..2ded826
--- /dev/null
+++ b/res/layout/default_apps_view_item.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:minHeight="?android:attr/listPreferredItemHeight"
+            android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+            android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+            android:paddingTop="8dip"
+            android:paddingBottom="8dip"
+            android:columnCount="4">
+
+    <ImageView
+            android:id="@+id/app_icon"
+            android:layout_width="@android:dimen/app_icon_size"
+            android:layout_height="@android:dimen/app_icon_size"
+            android:layout_rowSpan="2"
+            android:layout_marginEnd="8dip"
+            android:scaleType="centerInside"
+            android:contentDescription="@null" />
+
+    <TextView
+            android:id="@+id/app_name"
+            android:layout_width="0dip"
+            android:layout_columnSpan="2"
+            android:layout_gravity="fill_horizontal"
+            android:layout_marginTop="2dip"
+            android:singleLine="true"
+            android:ellipsize="marquee"
+            android:textAppearance="@android:style/TextAppearance.Material.Subhead"
+            android:textAlignment="viewStart"/>
+
+    <TextView
+            android:id="@+id/app_domains"
+            android:layout_column="1"
+            android:layout_row="1"
+            android:layout_gravity="fill_horizontal|top"
+            android:textAppearance="@android:style/TextAppearance.Material.Body1"
+            android:textColor="?android:attr/textColorSecondary"
+            android:textAlignment="viewStart" />
+
+</GridLayout>
diff --git a/res/layout/manage_applications_item.xml b/res/layout/manage_applications_item.xml
index 5471aa9..042d518 100755
--- a/res/layout/manage_applications_item.xml
+++ b/res/layout/manage_applications_item.xml
@@ -34,7 +34,8 @@
         android:layout_rowSpan="2"
         android:layout_marginEnd="8dip"
         android:scaleType="centerInside"
-        android:contentDescription="@null" />
+        android:contentDescription="@null"
+        android:duplicateParentState="true" />
 
     <TextView
         android:id="@+id/app_name"
@@ -45,7 +46,8 @@
         android:singleLine="true"
         android:ellipsize="marquee"
         android:textAppearance="@android:style/TextAppearance.Material.Subhead"
-        android:textAlignment="viewStart"/>
+        android:textAlignment="viewStart"
+        android:duplicateParentState="true" />
 
     <CheckBox android:id="@+id/app_on_sdcard"
         android:layout_marginStart="8dip"
@@ -53,7 +55,8 @@
         android:layout_rowSpan="2"
         android:visibility="gone"
         android:clickable="false"
-        android:focusable="false" />
+        android:focusable="false"
+        android:duplicateParentState="true" />
 
     <TextView
         android:id="@+id/app_size"
@@ -62,7 +65,8 @@
         android:layout_gravity="fill_horizontal|top"
         android:textAppearance="@android:style/TextAppearance.Material.Body1"
         android:textColor="?android:attr/textColorSecondary"
-        android:textAlignment="viewStart" />
+        android:textAlignment="viewStart"
+        android:duplicateParentState="true" />
 
     <TextView
         android:id="@+id/app_disabled"
@@ -73,6 +77,7 @@
         android:textColor="?android:attr/textColorSecondary"
         android:textAlignment="viewEnd"
         android:singleLine="true"
-        android:ellipsize="marquee" />
+        android:ellipsize="marquee"
+        android:duplicateParentState="true" />
 
 </GridLayout>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 3eaf38d..630d2a4 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -3052,6 +3052,9 @@
     <!-- [CHAR LIMIT=NONE] Time label for an operation that has never executed. -->
     <string name="app_ops_never_used">(Never used)</string>
 
+    <!-- [CHAR LIMIT=25] Text shown when there are no default Apps -->
+    <string name="no_default_apps">No default Apps.</string>
+
     <!-- [CHAR LIMIT=25] Services settings screen, setting option name for the user to go to the screen to view app storage use -->
     <string name="storageuse_settings_title">Storage use</string>
     <!-- Services settings screen, setting option summary for the user to go to the screen to app storage use -->
@@ -6068,6 +6071,20 @@
    <!-- Summary for app storage preference [CHAR LIMIT=15] -->
    <string name="storage_summary_format"><xliff:g id="size" example="30.00MB">%1$s</xliff:g> used in <xliff:g id="storage_type" example="internal storage">%2$s</xliff:g></string>
 
+   <!-- Category name for App Launch -->
+   <string name="app_launch_domain_links_title">Domain links</string>
+   <string name="app_launch_open_domain_urls_title">Open Domain URLs</string>
+   <string name="app_launch_open_domain_urls_summary">Allow app to directly open Domain URLs</string>
+   <string name="app_launch_supported_domain_urls_title">Supported domains URLs</string>
+   <string name="app_launch_other_defaults_title">Other defaults</string>
+
+   <!-- Summary for app storage preference -->
+   <string name="storage_summary_format"><xliff:g id="size" example="30.00MB">%1$s</xliff:g> used in <xliff:g id="storage_type" example="internal memory">%2$s</xliff:g></string>
+   <!-- Internal storage label -->
+   <string name="storage_type_internal">internal memory</string>
+   <!-- External storage label -->
+   <string name="storage_type_external">external memory</string>
+
    <!-- Summary describing internal storage for applications [CHAR LIMIT=25] -->
    <string name="storage_type_internal">Internal storage</string>
    <!-- Summary describing external storage for applications [CHAR LIMIT=25] -->
@@ -6117,12 +6134,13 @@
     <string name="filter_notif_priority_apps">Priority</string>
     <!-- Label for showing apps with sensitive notifications in list [CHAR LIMIT=30] -->
     <string name="filter_notif_sensitive_apps">Sensitive</string>
+    <!-- Label for showing apps with domain URLs (data URI with http or https) in list [CHAR LIMIT=30] -->
+    <string name="filter_with_domain_urls_apps">With domain URLs</string>
 
     <!-- Description for advanced menu option to reset app preferences [CHAR LIMIT=NONE] -->
     <string name="reset_app_preferences_description">Reset preferences across all apps to defaults</string>
 
-    <!-- Description of settings item that leads to list of all apps
-         [CHAR LIMIT=NONE] -->
+    <!-- Description of settings item that leads to list of all apps [CHAR LIMIT=NONE] -->
     <string name="all_apps_summary"><xliff:g id="count" example="10">%d</xliff:g> apps installed, including system and downloaded apps</string>
 
     <!-- Title for advanced application management settings [CHAR LIMIT=30] -->
@@ -6142,4 +6160,23 @@
         LIMIT=45] -->
    <string name="app_permissions_group_summary"><xliff:g id="count" example="10">%d</xliff:g> of <xliff:g id="count" example="10">%d</xliff:g> apps allowed</string>
 
+    <!-- Label for the Domain URLs list that shows domain urls per App [CHAR LIMIT=30] -->
+    <string name="domain_urls_title">Domain URLs</string>
+
+    <!-- Summary for an App that dont open any domain URLs [CHAR LIMIT=45] -->
+    <string name="domain_urls_summary_none">Don\'t open any domain URL</string>
+
+    <!-- Summary of number of App that can open one and only one domain URLs [CHAR LIMIT=45] -->
+    <string name="domain_urls_summary_one">Open \'<xliff:g id="domain" example="mail.google.com">%s</xliff:g>\'</string>
+
+    <!-- Summary of number of App that can open several domain URLs [CHAR LIMIT=45] -->
+    <string name="domain_urls_summary_some">Open \'<xliff:g id="domain" example="mail.google.com">%s</xliff:g>\' and related URLs</string>
+
+    <!-- Description of settings item that leads to list of all apps with Domain URLs [CHAR LIMIT=NONE] -->
+    <plurals name="domain_urls_apps_summary">
+        <item quantity="zero">No app can open any domain URL</item>
+        <item quantity="one">One app can open its domain URLs</item>
+        <item quantity="other"><xliff:g id="count" example="10">%d</xliff:g> apps can open their domain URLs</item>
+    </plurals>
+
 </resources>
diff --git a/res/xml/advanced_apps.xml b/res/xml/advanced_apps.xml
index 2bbd5be..682ab2d 100644
--- a/res/xml/advanced_apps.xml
+++ b/res/xml/advanced_apps.xml
@@ -26,6 +26,15 @@
         settings:keywords="@string/keywords_app_permissions" />
 
     <PreferenceScreen
+            android:key="domain_urls"
+            android:title="@string/domain_urls_title"
+            android:fragment="com.android.settings.applications.ManageApplications">
+        <extra
+                android:name="classname"
+                android:value="com.android.settings.Settings$DomainsURLsAppListActivity" />
+    </PreferenceScreen>
+
+    <PreferenceScreen
         android:key="all_apps"
         android:fragment="com.android.settings.applications.ManageApplications"
         android:title="@string/filter_all_apps"
diff --git a/res/xml/installed_app_launch_settings.xml b/res/xml/installed_app_launch_settings.xml
new file mode 100644
index 0000000..7d6642c
--- /dev/null
+++ b/res/xml/installed_app_launch_settings.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  android:title="@string/application_info_label">
+
+    <PreferenceCategory android:key="app_launch_domain_links"
+                        android:title="@string/app_launch_domain_links_title">
+
+        <SwitchPreference
+                android:key="app_launch_open_domain_urls"
+                android:title="@string/app_launch_open_domain_urls_title"
+                android:summary="@string/app_launch_open_domain_urls_summary"
+                />
+
+
+        <com.android.settings.applications.AppDomainsPreference
+                android:key="app_launch_supported_domain_urls"
+                android:title="@string/app_launch_supported_domain_urls_title"
+                android:persistent="false"
+                android:dependency="app_launch_open_domain_urls"
+                />
+
+    </PreferenceCategory>
+
+    <PreferenceCategory android:key="app_launch_other_defaults"
+                        android:title="@string/app_launch_other_defaults_title">
+
+        <com.android.settings.applications.ClearDefaultsPreference
+                android:key="app_launch_clear_defaults"
+                android:persistent="false"
+                />
+
+    </PreferenceCategory>
+
+</PreferenceScreen>