Dbrant has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/173290

Change subject: Migration to Toolbar, and 5.0 support <3
......................................................................

Migration to Toolbar, and 5.0 support <3

- Upgrade target SDK to 21
- Upgrade build-tools to 21.1
- Upgrade support library to 21.0
- Implement Toolbar to take the place of the "old" ActionBar
- Delete drawables and styles related to the old ActionBar
- Bring back the old quick-return handler, since the Toolbar is a regular
  ViewGroup now.

Notes:
- I gave the Toolbar a manual drop-shadow, since the AppCompat library
  does not yet support the "elevation" api. Once it becomes supported, we
  can use setElevation().
- The Settings window (PreferenceActivity) doesn't have an ActionBar,
  since that's not supported by the AppCompat library either. We may need
  to manually give it a Toolbar, just like in the Main activity.

Change-Id: I9a00c49dd2544d7d2b1990028db2fb8ee1ce97d4
---
M wikipedia/AndroidManifest.xml
M wikipedia/build.gradle
D wikipedia/res/drawable-hdpi/ic_drawer.png
D wikipedia/res/drawable-ldrtl-hdpi/ic_drawer.png
D wikipedia/res/drawable-ldrtl-mdpi/ic_drawer.png
D wikipedia/res/drawable-ldrtl-xhdpi/ic_drawer.png
D wikipedia/res/drawable-ldrtl-xxhdpi/ic_drawer.png
D wikipedia/res/drawable-mdpi/ic_drawer.png
D wikipedia/res/drawable-xhdpi/ic_drawer.png
D wikipedia/res/drawable-xxhdpi/ic_drawer.png
D wikipedia/res/drawable/actionbar_themedark.xml
D wikipedia/res/drawable/actionbar_themelight.xml
A wikipedia/res/drawable/toolbar_bottom_shadow.xml
M wikipedia/res/layout/activity_main.xml
M wikipedia/res/layout/fragment_history.xml
M wikipedia/res/layout/fragment_navdrawer.xml
M wikipedia/res/layout/fragment_nearby.xml
M wikipedia/res/layout/fragment_page.xml
M wikipedia/res/layout/fragment_saved_pages.xml
M wikipedia/res/layout/group_toc_intro.xml
M wikipedia/res/values/colors.xml
M wikipedia/res/values/dimens.xml
M wikipedia/res/values/styles_wikidark.xml
M wikipedia/res/values/styles_wikilight.xml
M wikipedia/src/main/java/org/wikipedia/ThemedActionBarActivity.java
M wikipedia/src/main/java/org/wikipedia/Utils.java
M wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
M wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java
M wikipedia/src/main/java/org/wikipedia/page/ToCHandler.java
M wikipedia/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java
M wikipedia/src/main/java/org/wikipedia/search/SearchArticlesFragment.java
M wikipedia/src/main/java/org/wikipedia/search/SearchBarHideHandler.java
M wikipedia/src/main/java/org/wikipedia/settings/PreferenceActivityWithBack.java
33 files changed, 184 insertions(+), 209 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/90/173290/1

diff --git a/wikipedia/AndroidManifest.xml b/wikipedia/AndroidManifest.xml
index aabdc36..f161afb 100644
--- a/wikipedia/AndroidManifest.xml
+++ b/wikipedia/AndroidManifest.xml
@@ -43,6 +43,7 @@
         <!-- Don't delete the meta-data field above -->
 
         <activity android:name=".page.PageActivity"
+                  android:theme="@style/NoTitle"
                   android:windowSoftInputMode="stateHidden">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
diff --git a/wikipedia/build.gradle b/wikipedia/build.gradle
index 9204be7..1a1a44e 100644
--- a/wikipedia/build.gradle
+++ b/wikipedia/build.gradle
@@ -3,12 +3,12 @@
 def versionStart = '2.0'
 
 android {
-    compileSdkVersion 19
-    buildToolsVersion '20.0.0'
+    compileSdkVersion 21
+    buildToolsVersion '21.1.0'
     defaultConfig {
         applicationId 'org.wikipedia'
         minSdkVersion 10
-        targetSdkVersion 17
+        targetSdkVersion 21
         versionCode 88
         testApplicationId "org.wikipedia.test"
     }
@@ -110,8 +110,8 @@
         exclude group: 'org.json', module: 'json'
     }
     compile 'de.keyboardsurfer.android.widget:crouton:1.8.5@aar'
-    compile 'com.android.support:support-v4:20.0.0'
-    compile 'com.android.support:appcompat-v7:20.0.0@aar'
+    compile 'com.android.support:support-v4:21.0.+'
+    compile 'com.android.support:appcompat-v7:21.0.+@aar'
 }
 
 // The next block is for setting the release signing config from a file 
outside the git repo
diff --git a/wikipedia/res/drawable-hdpi/ic_drawer.png 
b/wikipedia/res/drawable-hdpi/ic_drawer.png
deleted file mode 100644
index 3f1933b..0000000
--- a/wikipedia/res/drawable-hdpi/ic_drawer.png
+++ /dev/null
Binary files differ
diff --git a/wikipedia/res/drawable-ldrtl-hdpi/ic_drawer.png 
b/wikipedia/res/drawable-ldrtl-hdpi/ic_drawer.png
deleted file mode 100644
index 0a3064a..0000000
--- a/wikipedia/res/drawable-ldrtl-hdpi/ic_drawer.png
+++ /dev/null
Binary files differ
diff --git a/wikipedia/res/drawable-ldrtl-mdpi/ic_drawer.png 
b/wikipedia/res/drawable-ldrtl-mdpi/ic_drawer.png
deleted file mode 100644
index 6c5518b..0000000
--- a/wikipedia/res/drawable-ldrtl-mdpi/ic_drawer.png
+++ /dev/null
Binary files differ
diff --git a/wikipedia/res/drawable-ldrtl-xhdpi/ic_drawer.png 
b/wikipedia/res/drawable-ldrtl-xhdpi/ic_drawer.png
deleted file mode 100644
index 4d909ff..0000000
--- a/wikipedia/res/drawable-ldrtl-xhdpi/ic_drawer.png
+++ /dev/null
Binary files differ
diff --git a/wikipedia/res/drawable-ldrtl-xxhdpi/ic_drawer.png 
b/wikipedia/res/drawable-ldrtl-xxhdpi/ic_drawer.png
deleted file mode 100644
index 1d2fcfa..0000000
--- a/wikipedia/res/drawable-ldrtl-xxhdpi/ic_drawer.png
+++ /dev/null
Binary files differ
diff --git a/wikipedia/res/drawable-mdpi/ic_drawer.png 
b/wikipedia/res/drawable-mdpi/ic_drawer.png
deleted file mode 100644
index 93e1d5e..0000000
--- a/wikipedia/res/drawable-mdpi/ic_drawer.png
+++ /dev/null
Binary files differ
diff --git a/wikipedia/res/drawable-xhdpi/ic_drawer.png 
b/wikipedia/res/drawable-xhdpi/ic_drawer.png
deleted file mode 100644
index b9529d0..0000000
--- a/wikipedia/res/drawable-xhdpi/ic_drawer.png
+++ /dev/null
Binary files differ
diff --git a/wikipedia/res/drawable-xxhdpi/ic_drawer.png 
b/wikipedia/res/drawable-xxhdpi/ic_drawer.png
deleted file mode 100644
index a4bf10d..0000000
--- a/wikipedia/res/drawable-xxhdpi/ic_drawer.png
+++ /dev/null
Binary files differ
diff --git a/wikipedia/res/drawable/actionbar_themedark.xml 
b/wikipedia/res/drawable/actionbar_themedark.xml
deleted file mode 100644
index 8a5bc16..0000000
--- a/wikipedia/res/drawable/actionbar_themedark.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android";>
-    <item>
-        <shape android:shape="rectangle">
-            <solid android:color="@color/actionbar_line_dark" />
-        </shape>
-    </item>
-    <item android:bottom="2dip">
-        <shape android:shape="rectangle">
-            <solid android:color="@color/actionbar_background_dark" />
-        </shape>
-    </item>
-</layer-list>
\ No newline at end of file
diff --git a/wikipedia/res/drawable/actionbar_themelight.xml 
b/wikipedia/res/drawable/actionbar_themelight.xml
deleted file mode 100644
index e002456..0000000
--- a/wikipedia/res/drawable/actionbar_themelight.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android";>
-    <item>
-        <shape android:shape="rectangle">
-            <solid android:color="@color/actionbar_line_light" />
-        </shape>
-    </item>
-    <item android:bottom="2dip">
-        <shape android:shape="rectangle">
-            <solid android:color="@color/actionbar_background_light" />
-        </shape>
-    </item>
-</layer-list>
\ No newline at end of file
diff --git a/wikipedia/res/drawable/toolbar_bottom_shadow.xml 
b/wikipedia/res/drawable/toolbar_bottom_shadow.xml
new file mode 100644
index 0000000..8b16103
--- /dev/null
+++ b/wikipedia/res/drawable/toolbar_bottom_shadow.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android";
+    android:shape="rectangle">
+    <gradient
+        android:startColor="#50000000"
+        android:endColor="#00000000"
+        android:angle="270"/>
+</shape>
\ No newline at end of file
diff --git a/wikipedia/res/layout/activity_main.xml 
b/wikipedia/res/layout/activity_main.xml
index 81ed8da..640c00d 100644
--- a/wikipedia/res/layout/activity_main.xml
+++ b/wikipedia/res/layout/activity_main.xml
@@ -30,4 +30,40 @@
         android:id="@+id/search_fragment"
         android:name="org.wikipedia.search.SearchArticlesFragment"
         tools:layout="@layout/fragment_search"/>
+
+    <LinearLayout
+        android:id="@+id/main_toolbar_container"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
+        <FrameLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+            <android.support.v7.widget.Toolbar
+                android:id="@+id/main_toolbar"
+                android:layout_width="match_parent"
+                android:layout_height="?attr/actionBarSize">
+                <View
+                    android:id="@+id/main_w_logo"
+                    android:layout_width="32dp"
+                    android:layout_height="32dp"
+                    android:background="@drawable/search_w"
+                    android:alpha="0.5"/>
+            </android.support.v7.widget.Toolbar>
+            <ProgressBar
+                android:id="@+id/main_progressbar"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginBottom="-7.5dp"
+                android:layout_gravity="bottom"
+                style="?android:attr/progressBarStyleHorizontal"/>
+        </FrameLayout>
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="6dp"
+            android:layout_gravity="bottom"
+            android:background="@drawable/toolbar_bottom_shadow"
+            />
+    </LinearLayout>
+
 </FrameLayout>
\ No newline at end of file
diff --git a/wikipedia/res/layout/fragment_history.xml 
b/wikipedia/res/layout/fragment_history.xml
index 65c5759..80bd4d9 100644
--- a/wikipedia/res/layout/fragment_history.xml
+++ b/wikipedia/res/layout/fragment_history.xml
@@ -4,7 +4,7 @@
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:background="?attr/window_background_color"
-              android:paddingTop="@dimen/actionBarHeight">
+              android:paddingTop="?attr/actionBarSize">
     <LinearLayout
             android:id="@+id/history_empty_container"
             android:orientation="vertical"
diff --git a/wikipedia/res/layout/fragment_navdrawer.xml 
b/wikipedia/res/layout/fragment_navdrawer.xml
index 873dada..6b56ff0 100644
--- a/wikipedia/res/layout/fragment_navdrawer.xml
+++ b/wikipedia/res/layout/fragment_navdrawer.xml
@@ -19,7 +19,7 @@
             >
 
         <!-- Spacer to make room for the search bar on top -->
-        <View android:layout_width="match_parent" 
android:layout_height="@dimen/actionBarHeight" />
+        <View android:layout_width="match_parent" 
android:layout_height="?attr/actionBarSize" />
 
         <LinearLayout android:layout_width="match_parent"
                       android:layout_height="wrap_content"
diff --git a/wikipedia/res/layout/fragment_nearby.xml 
b/wikipedia/res/layout/fragment_nearby.xml
index ad36dc7..c6c78f8 100644
--- a/wikipedia/res/layout/fragment_nearby.xml
+++ b/wikipedia/res/layout/fragment_nearby.xml
@@ -5,7 +5,7 @@
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:background="?attr/page_background_color"
-             android:paddingTop="@dimen/actionBarHeight">
+             android:paddingTop="?attr/actionBarSize">
 
     <LinearLayout
         android:id="@+id/nearby_empty_container"
diff --git a/wikipedia/res/layout/fragment_page.xml 
b/wikipedia/res/layout/fragment_page.xml
index d2685b3..a3538dc 100644
--- a/wikipedia/res/layout/fragment_page.xml
+++ b/wikipedia/res/layout/fragment_page.xml
@@ -28,7 +28,7 @@
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:orientation="vertical"
-                android:paddingTop="48dp"
+                android:paddingTop="?attr/actionBarSize"
                 >
                 <org.wikipedia.page.leadimages.ImageViewWithFace
                     android:id="@+id/page_image_1"
@@ -96,7 +96,7 @@
                             android:id="@+id/page_toc_list"
                             android:layout_width="match_parent"
                             android:layout_height="match_parent"
-                            android:layout_marginTop="@dimen/actionBarHeight"
+                            android:layout_marginTop="?attr/actionBarSize"
                             android:background="?attr/toc_background_color"
                             android:visibility="gone"
                             android:choiceMode="singleChoice"
diff --git a/wikipedia/res/layout/fragment_saved_pages.xml 
b/wikipedia/res/layout/fragment_saved_pages.xml
index cd25b05..ab79163 100644
--- a/wikipedia/res/layout/fragment_saved_pages.xml
+++ b/wikipedia/res/layout/fragment_saved_pages.xml
@@ -4,7 +4,7 @@
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:background="?attr/window_background_color"
-              android:paddingTop="@dimen/actionBarHeight">
+              android:paddingTop="?attr/actionBarSize">
     <LinearLayout
             android:id="@+id/saved_pages_empty_container"
             android:orientation="vertical"
diff --git a/wikipedia/res/layout/group_toc_intro.xml 
b/wikipedia/res/layout/group_toc_intro.xml
index 4a1c0d5..8e20e84 100644
--- a/wikipedia/res/layout/group_toc_intro.xml
+++ b/wikipedia/res/layout/group_toc_intro.xml
@@ -5,7 +5,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:layout_gravity="center"
-    android:layout_marginTop="48dp"
+    android:layout_marginTop="?attr/actionBarSize"
     android:gravity="center"
     android:orientation="vertical"
     android:paddingLeft="32dp"
diff --git a/wikipedia/res/values/colors.xml b/wikipedia/res/values/colors.xml
index c78df57..2154e0c 100644
--- a/wikipedia/res/values/colors.xml
+++ b/wikipedia/res/values/colors.xml
@@ -32,8 +32,7 @@
     <color name="button_light">#ff777777</color>
     <color name="window_background_light">#fff2f2f2</color>
     <color name="page_background_light">#ffffffff</color>
-    <color name="actionbar_background_light">#ffffffff</color>
-    <color name="actionbar_line_light">#ffc0c0c0</color>
+    <color name="actionbar_background_light">#ffe0e0e0</color>
     <color name="search_background_light">#ffffffff</color>
     <color name="toc_background_light">#ffffffff</color>
     <color name="toc_section_text_light">#ff333333</color>
@@ -47,8 +46,7 @@
     <color name="button_dark">#ff2B6FB2</color>
     <color name="window_background_dark">#ff000000</color>
     <color name="page_background_dark">#ff000000</color>
-    <color name="actionbar_background_dark">#ff303030</color>
-    <color name="actionbar_line_dark">#ff606060</color>
+    <color name="actionbar_background_dark">#ff505050</color>
     <color name="search_background_dark">#ff303030</color>
     <color name="toc_background_dark">#ff0C0C0C</color>
     <color name="toc_section_text_dark">#ffd0d0d0</color>
diff --git a/wikipedia/res/values/dimens.xml b/wikipedia/res/values/dimens.xml
index 2828a86..eb3a39d 100644
--- a/wikipedia/res/values/dimens.xml
+++ b/wikipedia/res/values/dimens.xml
@@ -7,9 +7,6 @@
 
     <dimen name="corner_radius_smaller">2dp</dimen>
 
-    <!-- Default ActionBar height -->
-    <dimen name="actionBarHeight">48dp</dimen>
-
     <!-- Default font size for WebView text based on system settings -->
     <dimen name="textSize">16sp</dimen>
 
diff --git a/wikipedia/res/values/styles_wikidark.xml 
b/wikipedia/res/values/styles_wikidark.xml
index 744e02b..17ca020 100644
--- a/wikipedia/res/values/styles_wikidark.xml
+++ b/wikipedia/res/values/styles_wikidark.xml
@@ -1,11 +1,9 @@
 <resources>
 
     <style name="Theme.WikiDark" parent="Theme.AppCompat">
-        <item 
name="android:actionBarItemBackground">@drawable/selectable_item_background</item>
-        <item 
name="android:actionBarStyle">@style/ActionBar.Solid.WikiDark</item>
-        <item name="actionBarStyle">@style/ActionBar.Solid.WikiDark</item>
+        <item name="windowActionModeOverlay">true</item>
+        <item name="toolbarStyle">@style/Toolbar.WikiDark</item>
         <item 
name="android:dropDownListViewStyle">@style/DropDownListView.WikiDark</item>
-        <item 
name="android:actionDropDownStyle">@style/DropDownNav.WikiDark</item>
         <item name="popupMenuStyle">@style/PopupMenu.WikiDark</item>
         <item name="android:popupMenuStyle">@style/PopupMenu.WikiDark</item>
         <item 
name="android:windowBackground">@color/window_background_dark</item>
@@ -19,7 +17,6 @@
         <item name="edit_text_color">@color/edit_text_dark</item>
         <item name="link_color">@color/link_dark</item>
         <item 
name="abusefilter_background_color">@color/abusefilter_background_dark</item>
-        <item name="actionbar_drawable">@drawable/actionbar_themedark</item>
         <item 
name="ic_find_previous_drawable">@drawable/ic_find_previous_dark</item>
         <item name="ic_find_next_drawable">@drawable/ic_find_next_dark</item>
         <item name="lead_image_drawable">@drawable/lead_default_dark</item>
@@ -27,18 +24,14 @@
         <item name="list_separator_color">@color/list_separator_dark</item>
     </style>
 
-    <style name="ActionBar.Solid.WikiDark" 
parent="@style/Widget.AppCompat.ActionBar.Solid">
-        <item name="android:background">@drawable/actionbar_themedark</item>
-        <item name="android:progressBarPadding">0dp</item>
-        <item name="progressBarPadding">0dp</item>
+    <style name="Toolbar.WikiDark" parent="@style/Widget.AppCompat.Toolbar">
+        <item name="android:background">?attr/actionbar_background_color</item>
+        <item name="android:navigationIcon">?attr/homeAsUpIndicator</item>
+        <item name="navigationIcon">?attr/homeAsUpIndicator</item>
     </style>
 
     <style name="DropDownListView.WikiDark" 
parent="@style/Widget.AppCompat.ListView.DropDown">
         <item 
name="android:listSelector">@drawable/selectable_item_background</item>
-    </style>
-
-    <style name="DropDownNav.WikiDark" 
parent="@style/Widget.AppCompat.Spinner.DropDown.ActionBar">
-        <item 
name="android:dropDownSelector">@drawable/selectable_item_background</item>
     </style>
 
     <style name="PopupMenu.WikiDark" 
parent="@style/Widget.AppCompat.ListPopupWindow">
diff --git a/wikipedia/res/values/styles_wikilight.xml 
b/wikipedia/res/values/styles_wikilight.xml
index e1063cf..942aea8 100644
--- a/wikipedia/res/values/styles_wikilight.xml
+++ b/wikipedia/res/values/styles_wikilight.xml
@@ -1,11 +1,9 @@
 <resources>
 
     <style name="Theme.WikiLight" parent="Theme.AppCompat.Light">
-        <item 
name="android:actionBarItemBackground">@drawable/selectable_item_background</item>
-        <item 
name="android:actionBarStyle">@style/ActionBar.Solid.WikiLight</item>
-        <item name="actionBarStyle">@style/ActionBar.Solid.WikiLight</item>
+        <item name="windowActionModeOverlay">true</item>
+        <item name="toolbarStyle">@style/Toolbar.WikiLight</item>
         <item 
name="android:dropDownListViewStyle">@style/DropDownListView.WikiLight</item>
-        <item 
name="android:actionDropDownStyle">@style/DropDownNav.WikiLight</item>
         <item 
name="android:windowBackground">@color/window_background_light</item>
         <item 
name="window_background_color">@color/window_background_light</item>
         <item name="page_background_color">@color/page_background_light</item>
@@ -17,7 +15,6 @@
         <item name="edit_text_color">@color/edit_text_light</item>
         <item name="link_color">@color/link_light</item>
         <item 
name="abusefilter_background_color">@color/abusefilter_background_light</item>
-        <item name="actionbar_drawable">@drawable/actionbar_themelight</item>
         <item 
name="ic_find_previous_drawable">@drawable/ic_find_previous_light</item>
         <item name="ic_find_next_drawable">@drawable/ic_find_next_light</item>
         <item name="lead_image_drawable">@drawable/lead_default</item>
@@ -25,18 +22,14 @@
         <item name="list_separator_color">@color/list_separator_light</item>
     </style>
 
-    <style name="ActionBar.Solid.WikiLight" 
parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
-        <item name="android:background">@drawable/actionbar_themelight</item>
-        <item name="android:progressBarPadding">0dp</item>
-        <item name="progressBarPadding">0dp</item>
+    <style name="Toolbar.WikiLight" parent="@style/Widget.AppCompat.Toolbar">
+        <item name="android:background">?attr/actionbar_background_color</item>
+        <item name="android:navigationIcon">?attr/homeAsUpIndicator</item>
+        <item name="navigationIcon">?attr/homeAsUpIndicator</item>
     </style>
 
     <style name="DropDownListView.WikiLight" 
parent="@style/Widget.AppCompat.Light.ListView.DropDown">
         <item 
name="android:listSelector">@drawable/selectable_item_background</item>
-    </style>
-
-    <style name="DropDownNav.WikiLight" 
parent="@style/Widget.AppCompat.Light.Spinner.DropDown.ActionBar">
-        <item 
name="android:dropDownSelector">@drawable/selectable_item_background</item>
     </style>
 
 </resources>
diff --git a/wikipedia/src/main/java/org/wikipedia/ThemedActionBarActivity.java 
b/wikipedia/src/main/java/org/wikipedia/ThemedActionBarActivity.java
index 196e8d0..0a02012 100644
--- a/wikipedia/src/main/java/org/wikipedia/ThemedActionBarActivity.java
+++ b/wikipedia/src/main/java/org/wikipedia/ThemedActionBarActivity.java
@@ -1,56 +1,29 @@
 package org.wikipedia;
 
-import com.nineoldandroids.view.ViewHelper;
-import android.content.res.Resources;
-import android.os.Build;
+import android.app.Activity;
 import android.os.Bundle;
-import android.support.v4.view.WindowCompat;
 import android.support.v7.app.ActionBarActivity;
-import android.util.TypedValue;
-import android.view.View;
 import android.view.ViewConfiguration;
-import android.view.ViewGroup;
-import android.view.Window;
 import java.lang.reflect.Field;
 
 public abstract class ThemedActionBarActivity extends ActionBarActivity {
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
-        onCreate(savedInstanceState, false, false);
-    }
-
-    public void onCreate(Bundle savedInstanceState, boolean 
withActionBarOverlay, boolean withProgressBar) {
         super.onCreate(savedInstanceState);
         setTheme(WikipediaApp.getInstance().getCurrentTheme());
 
-        if (withProgressBar) {
-            supportRequestWindowFeature(Window.FEATURE_PROGRESS);
+        if (getSupportActionBar() != null) {
+            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
         }
-        if (withActionBarOverlay) {
-            
supportRequestWindowFeature(WindowCompat.FEATURE_ACTION_BAR_OVERLAY);
-        }
-        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
         forceOverflowMenuIcon(this);
-
-        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
-            //for 2.3 it seems to be necessary to set this explicitly:
-            
getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(Utils.getThemedAttributeId(this,
 R.attr.actionbar_drawable)));
-        }
-
-        // Just setting the logo in the AndroidManifest.xml is not enough for 
all cases.
-        // 1: It doesn't work for GB.
-        // 2: (The transition between PageViewFragment and 
SearchArticlesFragment makes it temporarily reveal
-        // the icon instead of the logo. So, setting the icon dynamically 
seems to be the best solution to
-        // avoid those issues, while still having a different launcher icon.)
-        getSupportActionBar().setIcon(R.drawable.search_w);
     }
 
     /**
      * Helper function to force the Activity to show the three-dot overflow 
icon in its ActionBar.
      * @param activity Activity whose overflow icon will be forced.
      */
-    private static void forceOverflowMenuIcon(ActionBarActivity activity) {
+    private static void forceOverflowMenuIcon(Activity activity) {
         try {
             ViewConfiguration config = ViewConfiguration.get(activity);
             // Note: this field doesn't exist in 2.3, so those users will need 
to tap the physical menu button,
@@ -65,48 +38,5 @@
         } catch (Exception ex) {
             // multiple exceptions may be thrown above, but it's not super 
critical if it fails.
         }
-    }
-
-    /**
-     * Helper function to move the built-in ProgressBar that is part of the 
ActionBarActivity
-     * from the very top of the activity to the bottom of the ActionBar, where 
it looks better.
-     * Note: this only applies to API >10, since in API 10 the ProgressBar 
seems to be really
-     * wide, and actually looks better at the top of the activity.
-     * @param activity Activity whose ProgressBar to move.
-     */
-    public static void alignActivityProgressBar(ActionBarActivity activity) {
-        ViewGroup actionBar;
-        View progressBar;
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
-            actionBar = (ViewGroup)activity.getWindow()
-                                           .getDecorView()
-                                           
.findViewById(Resources.getSystem().getIdentifier("action_bar_container", "id", 
"android"));
-            progressBar = activity.getWindow()
-                                  .getDecorView()
-                                  
.findViewById(Resources.getSystem().getIdentifier("progress_horizontal", "id", 
"android"));
-            TypedValue tv = new TypedValue();
-            if 
(activity.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
-            {
-                // get the default height of the ActionBar
-                int offsetHeight = 
TypedValue.complexToDimensionPixelSize(tv.data, 
activity.getResources().getDisplayMetrics());
-                // subtract just a little bit, so that the whole ProgressBar 
fits at the bottom of the ActionBar
-                offsetHeight -= (int)(2 * 
(activity.getResources().getDisplayMetrics().density));
-                // and modify the offset of the ProgressBar!
-                if (actionBar != null && progressBar != null && offsetHeight > 
0) {
-                    ViewHelper.setTranslationY(progressBar, offsetHeight);
-                }
-            }
-        } else {
-            // but just in case we'll want to do this in 2.3, this is how to 
get the View ids:
-            /*
-            actionBar = (ViewGroup)activity.getWindow()
-                                           .getDecorView()
-                                           
.findViewById(activity.getResources().getIdentifier("action_bar_container", 
"id", activity.getPackageName()));
-            progressBar = activity.getWindow()
-                                  .getDecorView()
-                                  
.findViewById(activity.getResources().getIdentifier("progress_horizontal", 
"id", activity.getPackageName()));
-            */
-        }
-
     }
 }
diff --git a/wikipedia/src/main/java/org/wikipedia/Utils.java 
b/wikipedia/src/main/java/org/wikipedia/Utils.java
index 6beef20..8734574 100644
--- a/wikipedia/src/main/java/org/wikipedia/Utils.java
+++ b/wikipedia/src/main/java/org/wikipedia/Utils.java
@@ -7,6 +7,7 @@
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
+import android.content.res.TypedArray;
 import android.net.ConnectivityManager;
 import android.net.NetworkInfo;
 import android.net.Uri;
@@ -588,6 +589,14 @@
         return tv.resourceId;
     }
 
+    public static int getActionBarSize(Context context) {
+        final TypedArray styledAttributes = 
context.getTheme().obtainStyledAttributes(
+                new int[] { android.R.attr.actionBarSize });
+        int size = (int)styledAttributes.getDimension(0, 0);
+        styledAttributes.recycle();
+        return size;
+    }
+
     /**
      * Returns the distribution channel for the app from AndroidManifest.xml
      * @param ctx
diff --git a/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java 
b/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
index ab8ed89..be8c67e 100644
--- a/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
@@ -6,6 +6,7 @@
 import org.wikipedia.Site;
 import org.wikipedia.ThemedActionBarActivity;
 import org.wikipedia.Utils;
+import org.wikipedia.ViewAnimations;
 import org.wikipedia.WikipediaApp;
 import org.wikipedia.events.ChangeTextSizeEvent;
 import org.wikipedia.events.ThemeChangeEvent;
@@ -36,16 +37,18 @@
 import android.os.Build;
 import android.os.Bundle;
 import android.preference.PreferenceManager;
-import android.support.v4.app.ActionBarDrawerToggle;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentTransaction;
 import android.support.v4.widget.DrawerLayout;
+import android.support.v7.app.ActionBarDrawerToggle;
+import android.support.v7.widget.Toolbar;
 import android.text.Html;
 import android.util.Log;
 import android.view.Gravity;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
+import android.widget.ProgressBar;
 
 public class PageActivity extends ThemedActionBarActivity {
     public static final String ACTION_PAGE_FOR_TITLE = 
"org.wikipedia.page_for_title";
@@ -66,6 +69,14 @@
     private DrawerLayout drawerLayout;
     private NavDrawerFragment fragmentNavdrawer;
     private SearchArticlesFragment searchFragment;
+
+    public static final int PROGRESS_BAR_MAX_VALUE = 10000;
+    private ProgressBar progressBar;
+
+    private View toolbarContainer;
+    public View getToolbarView() {
+        return toolbarContainer;
+    }
 
     private ActionBarDrawerToggle mDrawerToggle;
     public ActionBarDrawerToggle getDrawerToggle() {
@@ -108,11 +119,16 @@
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState, true, true);
+        super.onCreate(savedInstanceState);
         app = (WikipediaApp) getApplicationContext();
 
         PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
         setContentView(R.layout.activity_main);
+
+        final Toolbar toolbar = (Toolbar) findViewById(R.id.main_toolbar);
+        setSupportActionBar(toolbar);
+
+        toolbarContainer = findViewById(R.id.main_toolbar_container);
 
         bus = app.getBus();
         bus.register(this);
@@ -122,11 +138,13 @@
         searchFragment = (SearchArticlesFragment) 
getSupportFragmentManager().findFragmentById(R.id.search_fragment);
 
         fragmentContainerView = findViewById(R.id.content_fragment_container);
+        progressBar = (ProgressBar)findViewById(R.id.main_progressbar);
+        progressBar.setMax(PROGRESS_BAR_MAX_VALUE);
+        updateProgressBar(false, true, 0);
 
         mDrawerToggle = new ActionBarDrawerToggle(
                 this,                  /* host Activity */
                 drawerLayout,          /* DrawerLayout object */
-                R.drawable.ic_drawer,  /* nav drawer icon to replace 'Up' 
caret */
                 R.string.app_name,     /* "open drawer" description */
                 R.string.app_name      /* "close drawer" description */
         ) {
@@ -159,10 +177,8 @@
                     fragmentNavdrawer.setupDynamicItems();
                     oncePerSlideLock = true;
                 }
-                // and make sure the ActionBar is showing
-                if (!getSupportActionBar().isShowing()) {
-                    getSupportActionBar().show();
-                }
+                // and make sure the Toolbar is showing
+                showToolbar();
             }
 
             @Override
@@ -258,26 +274,23 @@
         super.onPostCreate(savedInstanceState);
         // Sync the toggle state after onRestoreInstanceState has occurred.
         mDrawerToggle.syncState();
-        ThemedActionBarActivity.alignActivityProgressBar(this);
     }
 
     @Override
     public void onConfigurationChanged(Configuration newConfig) {
         super.onConfigurationChanged(newConfig);
         mDrawerToggle.onConfigurationChanged(newConfig);
-        ThemedActionBarActivity.alignActivityProgressBar(this);
     }
 
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
         if (searchFragment != null && !isSearching()) {
             getMenuInflater().inflate(R.menu.menu_main, menu);
+            
app.adjustDrawableToTheme(menu.findItem(R.id.menu_search).getIcon());
         }
-
-        
app.adjustDrawableToTheme(getResources().getDrawable(R.drawable.ic_drawer));
-        
app.adjustDrawableToTheme(getResources().getDrawable(R.drawable.search_w));
-        
app.adjustDrawableToTheme(getResources().getDrawable(R.drawable.search));
-
+        View wLogo = findViewById(R.id.main_w_logo);
+        app.adjustDrawableToTheme(wLogo.getBackground());
+        wLogo.setVisibility(isSearching() ? View.GONE : View.VISIBLE);
         return super.onCreateOptionsMenu(menu);
     }
 
@@ -300,6 +313,10 @@
         }
         // Handle other action bar items...
         return super.onOptionsItemSelected(item);
+    }
+
+    public void showToolbar() {
+        ViewAnimations.ensureTranslationY(toolbarContainer, 0);
     }
 
     /**
@@ -343,15 +360,12 @@
      * @param value Value of the progress bar (may be between 0 and 10000). 
Ignored if the
      *              progress bar is indeterminate.
      */
-    public void updateProgressBar(final boolean visible, final boolean 
indeterminate, final int value) {
-        fragmentContainerView.post(new Runnable() {
-            @Override
-            public void run() {
-                setSupportProgressBarIndeterminate(indeterminate);
-                setSupportProgress(value);
-                setSupportProgressBarVisibility(visible);
-            }
-        });
+    public void updateProgressBar(boolean visible, boolean indeterminate, int 
value) {
+        progressBar.setIndeterminate(indeterminate);
+        if (!indeterminate) {
+            progressBar.setProgress(value);
+        }
+        progressBar.setVisibility(visible ? View.VISIBLE : View.GONE);
     }
 
     /**
@@ -393,9 +407,7 @@
         trans.commit();
 
         // and make sure the ActionBar is visible
-        if (!getSupportActionBar().isShowing()) {
-            getSupportActionBar().show();
-        }
+        showToolbar();
         //also make sure the progress bar is not showing
         updateProgressBar(false, true, 0);
     }
@@ -409,9 +421,7 @@
         // make sure the ActionBar is showing, since we could be currently 
scrolled down far enough
         // within a Page fragment that the ActionBar is hidden, and if the 
previous fragment was
         // a different type of fragment (e.g. History), the ActionBar would 
remain hidden.
-        if (!getSupportActionBar().isShowing()) {
-            getSupportActionBar().show();
-        }
+        showToolbar();
         //also make sure the progress bar is not showing
         updateProgressBar(false, true, 0);
     }
diff --git 
a/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java 
b/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java
index 24a9eaa..5e41362 100644
--- a/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java
@@ -81,8 +81,6 @@
     private int state = STATE_NO_FETCH;
     private int subState = SUBSTATE_NONE;
 
-    private static final int MAX_PROGRESS_VALUE = 10000;
-
     /**
      * Whether to save the full page content as soon as it's loaded.
      * Used in the following cases:
@@ -228,7 +226,8 @@
     }
 
     private void displayNonLeadSection(int index) {
-        getActivity().updateProgressBar(true, false, MAX_PROGRESS_VALUE / 
page.getSections().size() * index);
+        getActivity().updateProgressBar(true, false, 
PageActivity.PROGRESS_BAR_MAX_VALUE
+                / page.getSections().size() * index);
 
         try {
             JSONObject wrapper = new JSONObject();
@@ -376,7 +375,7 @@
 
         editHandler = new EditHandler(parentFragment, bridge);
 
-        new SearchBarHideHandler(webView, getActivity());
+        new SearchBarHideHandler(webView, getActivity().getToolbarView());
         imagesContainer = (ViewGroup) 
parentFragment.getView().findViewById(R.id.page_images_container);
         leadImagesHandler = new LeadImagesHandler(parentFragment, bridge, 
webView, imagesContainer);
 
@@ -638,9 +637,7 @@
             public void onDestroyActionMode(ActionMode mode) {
                 findInPageActionMode = null;
                 webView.clearMatches();
-                if (!pageActivity.getSupportActionBar().isShowing()) {
-                    pageActivity.getSupportActionBar().show();
-                }
+                pageActivity.showToolbar();
                 Utils.hideSoftKeyboard(pageActivity);
             }
         });
diff --git a/wikipedia/src/main/java/org/wikipedia/page/ToCHandler.java 
b/wikipedia/src/main/java/org/wikipedia/page/ToCHandler.java
index 27f2b77..7739ed6 100644
--- a/wikipedia/src/main/java/org/wikipedia/page/ToCHandler.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/ToCHandler.java
@@ -102,9 +102,7 @@
             public void onDrawerSlide(View drawerView, float slideOffset) {
                 super.onDrawerSlide(drawerView, slideOffset);
                 // make sure the ActionBar is showing
-                if (!parentActivity.getSupportActionBar().isShowing()) {
-                    parentActivity.getSupportActionBar().show();
-                }
+                ((PageActivity)parentActivity).showToolbar();
             }
         });
     }
diff --git 
a/wikipedia/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java 
b/wikipedia/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java
index e85dc91..1010eea 100644
--- 
a/wikipedia/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java
+++ 
b/wikipedia/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java
@@ -81,7 +81,7 @@
      * Number of pixels to offset the WebView content (in addition to page 
title height),
      * when lead images are disabled.
      */
-    private static final int DISABLED_OFFSET_DP = 80;
+    private static final int DISABLED_OFFSET_DP = 88;
 
     /**
      * Whether lead images are enabled, overall.  They will be disabled 
automatically
@@ -339,7 +339,7 @@
         int titleBottomPadding = 0;
 
         if (isMainPage) {
-            titleContainerHeight = 
(int)(parentFragment.getResources().getDimension(R.dimen.actionBarHeight) / 
displayDensity);
+            titleContainerHeight = 
(int)(Utils.getActionBarSize(parentFragment.getActivity()) / displayDensity);
             imageContainer.setVisibility(View.INVISIBLE);
         } else if (!leadImagesEnabled) {
             // ok, we're not going to show lead images, so we need to make some
diff --git 
a/wikipedia/src/main/java/org/wikipedia/search/SearchArticlesFragment.java 
b/wikipedia/src/main/java/org/wikipedia/search/SearchArticlesFragment.java
index 40ab863..cc0b28f 100644
--- a/wikipedia/src/main/java/org/wikipedia/search/SearchArticlesFragment.java
+++ b/wikipedia/src/main/java/org/wikipedia/search/SearchArticlesFragment.java
@@ -13,8 +13,11 @@
 import android.app.AlertDialog;
 import android.content.DialogInterface;
 import android.graphics.Typeface;
+import android.app.Activity;
+import android.graphics.Color;
 import android.os.Bundle;
 import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentActivity;
 import android.support.v4.view.MenuItemCompat;
 import android.support.v7.widget.SearchView;
 import android.text.TextUtils;
@@ -132,7 +135,7 @@
         });
         app.adjustDrawableToTheme(((ImageView)deleteButton).getDrawable());
 
-        recentSearchesFragment = 
(RecentSearchesFragment)getActivity().getSupportFragmentManager().findFragmentById(R.id.search_panel_recent);
+        recentSearchesFragment = 
(RecentSearchesFragment)getChildFragmentManager().findFragmentById(R.id.search_panel_recent);
         searchTypesContainer = 
parentLayout.findViewById(R.id.search_panel_types);
 
         buttonTitleSearch = 
parentLayout.findViewById(R.id.button_search_title);
@@ -159,7 +162,7 @@
             }
         });
 
-        titleSearchFragment = 
(TitleSearchFragment)getActivity().getSupportFragmentManager().findFragmentById(R.id.fragment_search_title);
+        titleSearchFragment = 
(TitleSearchFragment)getChildFragmentManager().findFragmentById(R.id.fragment_search_title);
         titleSearchFragment.setOnNoResultsListener(new 
TitleSearchFragment.OnNoResultsListener() {
             @Override
             public void onNoResults() {
@@ -178,7 +181,7 @@
             }
         });
 
-        fullSearchFragment = 
(FullSearchFragment)getActivity().getSupportFragmentManager().findFragmentById(R.id.fragment_search_full);
+        fullSearchFragment = 
(FullSearchFragment)getChildFragmentManager().findFragmentById(R.id.fragment_search_full);
 
         //make sure we're hidden by default
         searchContainerView.setVisibility(View.GONE);
@@ -190,6 +193,11 @@
     }
 
     @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+    }
+
+    @Override
     public void onDestroyView() {
         super.onDestroyView();
         app.getBus().unregister(this);
diff --git 
a/wikipedia/src/main/java/org/wikipedia/search/SearchBarHideHandler.java 
b/wikipedia/src/main/java/org/wikipedia/search/SearchBarHideHandler.java
index a1ec532..2eafccd 100644
--- a/wikipedia/src/main/java/org/wikipedia/search/SearchBarHideHandler.java
+++ b/wikipedia/src/main/java/org/wikipedia/search/SearchBarHideHandler.java
@@ -1,36 +1,65 @@
 package org.wikipedia.search;
 
-import android.support.v7.app.ActionBarActivity;
+import android.view.View;
+
+import com.nineoldandroids.view.ViewHelper;
+
+import org.wikipedia.ViewAnimations;
 import org.wikipedia.views.ObservableWebView;
 
-public class SearchBarHideHandler implements  
ObservableWebView.OnScrollChangeListener {
+public class SearchBarHideHandler implements  
ObservableWebView.OnScrollChangeListener, 
ObservableWebView.OnUpOrCancelMotionEventListener, 
ObservableWebView.OnDownMotionEventListener {
     private final ObservableWebView webview;
-    private final ActionBarActivity activity;
+    private final View quickReturnView;
 
-    public SearchBarHideHandler(ObservableWebView webview, ActionBarActivity 
activity) {
+    public SearchBarHideHandler(ObservableWebView webview, View 
quickReturnView) {
         this.webview = webview;
-        this.activity =  activity;
+        this.quickReturnView =  quickReturnView;
 
         webview.addOnScrollChangeListener(this);
+        webview.addOnDownMotionEventListener(this);
+        webview.addOnUpOrCancelMotionEventListener(this);
     }
 
     @Override
     public void onScrollChanged(int oldScrollY, int scrollY) {
         if (scrollY <= webview.getHeight()) {
-            // For the first screenful, ensure it's always shown
-            if (!activity.getSupportActionBar().isShowing()) {
-                activity.getSupportActionBar().show();
-            }
+            // For the first screenful, ensure it always exists.
+            ViewAnimations.ensureTranslationY(quickReturnView, 0);
             return;
         }
+        int animMargin;
         if (oldScrollY > scrollY) {
-            if (!activity.getSupportActionBar().isShowing()) {
-                activity.getSupportActionBar().show();
-            }
+            int minMargin = 0;
+            int scrollDelta = oldScrollY - scrollY;
+            int newMargin = (int) ViewHelper.getTranslationY(quickReturnView) 
+ scrollDelta;
+            animMargin = Math.min(minMargin, newMargin);
         } else {
-            if (activity.getSupportActionBar().isShowing()) {
-                activity.getSupportActionBar().hide();
+            // scroll downn!
+            int minMargin = -quickReturnView.getHeight();
+            int scrollDelta = scrollY - oldScrollY;
+            int newMargin = (int)ViewHelper.getTranslationY(quickReturnView) - 
scrollDelta;
+            animMargin = Math.max(minMargin, newMargin);
+        }
+        ViewHelper.setTranslationY(quickReturnView, animMargin);
+    }
+
+    @Override
+    public void onUpOrCancelMotionEvent() {
+        int transY = (int)ViewHelper.getTranslationY(quickReturnView);
+        int height = quickReturnView.getHeight();
+        if (transY != 0 && transY > -height) {
+            if (transY > -height / 2) {
+                // Fully display it
+                ViewAnimations.ensureTranslationY(quickReturnView, 0);
+            } else {
+                // Fully hide it
+                ViewAnimations.ensureTranslationY(quickReturnView, -height);
             }
         }
     }
+
+    @Override
+    public void onDownMotionEvent() {
+        // Don't do anything for now
+    }
 }
diff --git 
a/wikipedia/src/main/java/org/wikipedia/settings/PreferenceActivityWithBack.java
 
b/wikipedia/src/main/java/org/wikipedia/settings/PreferenceActivityWithBack.java
index 500eece..bb25445 100644
--- 
a/wikipedia/src/main/java/org/wikipedia/settings/PreferenceActivityWithBack.java
+++ 
b/wikipedia/src/main/java/org/wikipedia/settings/PreferenceActivityWithBack.java
@@ -1,6 +1,5 @@
 package org.wikipedia.settings;
 
-import android.os.Build;
 import android.os.Bundle;
 import android.preference.PreferenceActivity;
 import android.view.MenuItem;
@@ -11,11 +10,6 @@
     public void onCreate(Bundle savedInstanceState) {
         setTheme(WikipediaApp.getInstance().getCurrentTheme());
         super.onCreate(savedInstanceState);
-
-        // Hmm. Can't use ActionBarActivity?
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
-            getActionBar().setDisplayHomeAsUpEnabled(true);
-        }
     }
 
     public boolean onMenuItemSelected(int featureId, MenuItem item) {

-- 
To view, visit https://gerrit.wikimedia.org/r/173290
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9a00c49dd2544d7d2b1990028db2fb8ee1ce97d4
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Dbrant <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to