Dbrant has submitted this change and it was merged.

Change subject: Prohibit context action bar and fix rotation bugs
......................................................................


Prohibit context action bar and fix rotation bugs

- Prohibit CAB in toolbar fields, "search Wikipedia" and "find in
  page". Add "CabSearchView" which exposes this functionality.
- Permit CAB in non-toolbar fields including the article, history
  search, and saved pages search.
- Don't extract EditText input field UI everywhere.  This change
  effects landscape mode only.
- Fix bug wherein the search box disappeared on rotation with nonempty
  query text yielding no results. This was caused by successfully
  preserving UI state but not Fragment state.
- Fix bug wherein the "find in page" search box did not fill the
  available space. This was caused by an obscure option on the poorly
  conceived SearchView.
- Add "ApiUtil".
- Be more precise about the source of action bar mode.
- Specify soft keyboard done button for edit preview, create account,
  create account captcha, and find in page.
- Fix comments around action bar mode.
- Rename activity_main.xml layout to activity_page.xml layout to match
  Java structure.
- Minor adjustment to use Map instead of HashMap in
  CommunicationBridge.
- Add missing Java override annotation on method.

Bug: T88768
Change-Id: Ia25dbfbd7cbc2e72e0da7c136fb3124a6196fb80
---
M wikipedia/res/layout/activity_create_account.xml
M wikipedia/res/layout/activity_langlinks.xml
M wikipedia/res/layout/activity_login.xml
R wikipedia/res/layout/activity_page.xml
M wikipedia/res/layout/dialog_preference_languages.xml
M wikipedia/res/layout/fragment_history.xml
M wikipedia/res/layout/fragment_preview_summary.xml
M wikipedia/res/layout/fragment_saved_pages.xml
M wikipedia/res/layout/group_captcha.xml
M wikipedia/res/layout/group_find_in_page.xml
M wikipedia/res/values/attrs.xml
M wikipedia/src/main/java/org/wikipedia/bridge/CommunicationBridge.java
M wikipedia/src/main/java/org/wikipedia/history/HistoryFragment.java
M wikipedia/src/main/java/org/wikipedia/page/FindInPageActionProvider.java
M wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
M wikipedia/src/main/java/org/wikipedia/savedpages/SavedPagesFragment.java
A wikipedia/src/main/java/org/wikipedia/util/ApiUtil.java
A wikipedia/src/main/java/org/wikipedia/views/CabSearchView.java
18 files changed, 198 insertions(+), 18 deletions(-)

Approvals:
  Dbrant: Looks good to me, approved



diff --git a/wikipedia/res/layout/activity_create_account.xml 
b/wikipedia/res/layout/activity_create_account.xml
index 8317ed9..4ac2dc7 100644
--- a/wikipedia/res/layout/activity_create_account.xml
+++ b/wikipedia/res/layout/activity_create_account.xml
@@ -22,6 +22,7 @@
                     android:layout_height="wrap_content"
                     android:hint="@string/create_account_username_hint"
                     android:singleLine="true"
+                    android:imeOptions="flagNoExtractUi"
                     android:inputType="textVisiblePassword|textNoSuggestions"
                     />
 
@@ -31,6 +32,7 @@
                     android:layout_height="wrap_content"
                     android:hint="@string/create_account_password_hint"
                     android:singleLine="true"
+                    android:imeOptions="flagNoExtractUi"
                     android:inputType="textPassword"
                     />
 
@@ -40,6 +42,7 @@
                     android:layout_height="wrap_content"
                     android:hint="@string/create_account_password_repeat_hint"
                     android:singleLine="true"
+                    android:imeOptions="flagNoExtractUi"
                     android:inputType="textPassword"
                     />
 
@@ -56,6 +59,7 @@
                     android:layout_height="wrap_content"
                     android:hint="@string/create_account_email_hint"
                     android:singleLine="true"
+                    android:imeOptions="actionDone|flagNoExtractUi"
                     android:inputType="textEmailAddress"
                     />
 
diff --git a/wikipedia/res/layout/activity_langlinks.xml 
b/wikipedia/res/layout/activity_langlinks.xml
index 40d1f80..df16066 100644
--- a/wikipedia/res/layout/activity_langlinks.xml
+++ b/wikipedia/res/layout/activity_langlinks.xml
@@ -73,7 +73,7 @@
                 android:layout_marginRight="8dp"
                 android:hint="@string/langlinks_filter_hint"
                 android:singleLine="true"
-                android:imeOptions="actionDone"
+                android:imeOptions="actionDone|flagNoExtractUi"
                 />
         <ListView android:id="@+id/langlinks_list"
                   android:layout_width="fill_parent"
diff --git a/wikipedia/res/layout/activity_login.xml 
b/wikipedia/res/layout/activity_login.xml
index 0389396..88dac96 100644
--- a/wikipedia/res/layout/activity_login.xml
+++ b/wikipedia/res/layout/activity_login.xml
@@ -20,6 +20,7 @@
                 android:hint="@string/login_username_hint"
                 android:inputType="textVisiblePassword|textNoSuggestions"
                 android:singleLine="true"
+                android:imeOptions="flagNoExtractUi"
                 />
         <org.wikipedia.views.PlainPasteEditText
                 android:id="@+id/login_password_text"
@@ -28,7 +29,7 @@
                 android:inputType="textPassword"
                 style="?android:textAppearanceMedium"
                 android:hint="@string/login_password_hint"
-                android:imeOptions="actionDone"
+                android:imeOptions="actionDone|flagNoExtractUi"
                 />
 
         <Button
diff --git a/wikipedia/res/layout/activity_main.xml 
b/wikipedia/res/layout/activity_page.xml
similarity index 96%
rename from wikipedia/res/layout/activity_main.xml
rename to wikipedia/res/layout/activity_page.xml
index 94760b2..5f8d4f5 100644
--- a/wikipedia/res/layout/activity_main.xml
+++ b/wikipedia/res/layout/activity_page.xml
@@ -1,6 +1,7 @@
 <org.wikipedia.views.WikiDrawerLayout
     xmlns:android="http://schemas.android.com/apk/res/android";
     xmlns:tools="http://schemas.android.com/tools";
+    xmlns:app="http://schemas.android.com/apk/res-auto";
     android:id="@+id/drawer_layout"
     android:layout_width="match_parent"
     android:saveEnabled="false"
@@ -87,7 +88,7 @@
                                     android:shadowRadius="2"
                                     android:layout_gravity="center_vertical"/>
                             </LinearLayout>
-                            <android.support.v7.widget.SearchView
+                            <org.wikipedia.views.CabSearchView
                                 android:id="@+id/main_search_view"
                                 android:layout_width="match_parent"
                                 android:layout_height="36dp"
@@ -98,8 +99,9 @@
                                 android:visibility="gone"
                                 android:focusable="true"
                                 android:inputType="text"
-                                android:imeOptions="actionGo"
+                                android:imeOptions="actionGo|flagNoExtractUi"
                                 style="@style/AppTheme.SearchViewStyle"
+                                app:cabEnabled="false"
                                 />
                         </FrameLayout>
                     </android.support.v7.widget.Toolbar>
diff --git a/wikipedia/res/layout/dialog_preference_languages.xml 
b/wikipedia/res/layout/dialog_preference_languages.xml
index 98fcada..08ec1f2 100644
--- a/wikipedia/res/layout/dialog_preference_languages.xml
+++ b/wikipedia/res/layout/dialog_preference_languages.xml
@@ -10,7 +10,7 @@
             android:layout_width="match_parent"
             android:layout_height="48dp"
             android:hint="@string/preference_languages_filter_hint"
-            android:imeOptions="actionDone"
+            android:imeOptions="actionDone|flagNoExtractUi"
             android:singleLine="true"
             android:layout_marginLeft="8dp"
             android:layout_marginRight="8dp"
diff --git a/wikipedia/res/layout/fragment_history.xml 
b/wikipedia/res/layout/fragment_history.xml
index b95184b..5394ebf 100644
--- a/wikipedia/res/layout/fragment_history.xml
+++ b/wikipedia/res/layout/fragment_history.xml
@@ -48,7 +48,7 @@
         <org.wikipedia.views.PlainPasteEditText
                 android:id="@+id/history_search_list"
                 android:hint="@string/history_search_list_hint"
-                android:imeOptions="actionDone"
+                android:imeOptions="actionDone|flagNoExtractUi"
                 android:singleLine="true"
                 android:layout_width="match_parent"
                 android:layout_height="48dp"
diff --git a/wikipedia/res/layout/fragment_preview_summary.xml 
b/wikipedia/res/layout/fragment_preview_summary.xml
index 818e6d6..d7d98f2 100644
--- a/wikipedia/res/layout/fragment_preview_summary.xml
+++ b/wikipedia/res/layout/fragment_preview_summary.xml
@@ -19,6 +19,7 @@
             android:paddingLeft="16dp"
             android:paddingRight="16dp"
             android:singleLine="true"
+            android:imeOptions="actionDone|flagNoExtractUi"
             android:maxLength="255"
             android:textColor="?attr/edit_text_color"
             android:hint="@string/edit_summary_tag_other_hint"/>
diff --git a/wikipedia/res/layout/fragment_saved_pages.xml 
b/wikipedia/res/layout/fragment_saved_pages.xml
index 4fa84cb..6f2fada 100644
--- a/wikipedia/res/layout/fragment_saved_pages.xml
+++ b/wikipedia/res/layout/fragment_saved_pages.xml
@@ -48,7 +48,7 @@
                 android:layout_width="match_parent"
                 android:layout_height="48dp"
                 android:hint="@string/saved_pages_search_list_hint"
-                android:imeOptions="actionDone"
+                android:imeOptions="actionDone|flagNoExtractUi"
                 android:singleLine="true"
                 android:layout_marginLeft="8dp"
                 android:layout_marginRight="8dp"
diff --git a/wikipedia/res/layout/group_captcha.xml 
b/wikipedia/res/layout/group_captcha.xml
index 60bff0d..3e645a1 100644
--- a/wikipedia/res/layout/group_captcha.xml
+++ b/wikipedia/res/layout/group_captcha.xml
@@ -52,6 +52,7 @@
             android:layout_gravity="center_horizontal"
             android:hint="@string/edit_section_captcha_hint"
             android:singleLine="true"
+            android:imeOptions="actionDone|flagNoExtractUi"
             android:inputType="textVisiblePassword|textNoSuggestions"
             />
     <Button
diff --git a/wikipedia/res/layout/group_find_in_page.xml 
b/wikipedia/res/layout/group_find_in_page.xml
index e0763f3..6e318c9 100644
--- a/wikipedia/res/layout/group_find_in_page.xml
+++ b/wikipedia/res/layout/group_find_in_page.xml
@@ -2,12 +2,13 @@
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android";
               xmlns:tools="http://schemas.android.com/tools";
+              xmlns:app="http://schemas.android.com/apk/res-auto";
               android:id="@+id/find_in_page_container"
               android:layout_gravity="top"
               android:orientation="horizontal"
               android:layout_width="match_parent"
               android:layout_height="wrap_content">
-    <android.support.v7.widget.SearchView
+    <org.wikipedia.views.CabSearchView
             android:id="@+id/find_in_page_input"
             android:inputType="text"
             android:layout_width="0dp"
@@ -16,7 +17,9 @@
             android:hint="@string/find_in_page"
             android:layout_gravity="center_vertical"
             android:singleLine="true"
+            android:imeOptions="actionDone|flagNoExtractUi"
             style="@style/AppTheme.SearchViewStyle"
+            app:cabEnabled="false"
             />
     <TextView
             android:id="@+id/find_in_page_match"
diff --git a/wikipedia/res/values/attrs.xml b/wikipedia/res/values/attrs.xml
index f34eaef..b939853 100644
--- a/wikipedia/res/values/attrs.xml
+++ b/wikipedia/res/values/attrs.xml
@@ -15,4 +15,8 @@
     <attr name="syntax_highlight_template_color" format="reference"/>
     <attr name="subtle_gray_color" format="reference"/>
     <attr name="nearby_marker_drawable" format="reference"/>
+
+    <declare-styleable name="CabSearchView">
+        <attr name="cabEnabled" format="boolean" />
+    </declare-styleable>
 </resources>
diff --git 
a/wikipedia/src/main/java/org/wikipedia/bridge/CommunicationBridge.java 
b/wikipedia/src/main/java/org/wikipedia/bridge/CommunicationBridge.java
index c010c22..ef8e302 100644
--- a/wikipedia/src/main/java/org/wikipedia/bridge/CommunicationBridge.java
+++ b/wikipedia/src/main/java/org/wikipedia/bridge/CommunicationBridge.java
@@ -16,6 +16,7 @@
 
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.Map;
 
 /**
  * Two way communications bridge between JS in a WebView and Java.
@@ -23,7 +24,7 @@
 public class CommunicationBridge {
     private final WebView webView;
 
-    private final HashMap<String, ArrayList<JSEventListener>> eventListeners;
+    private final Map<String, ArrayList<JSEventListener>> eventListeners;
 
     private final BridgeMarshaller marshaller;
 
@@ -140,7 +141,7 @@
     }
 
     private static class BridgeMarshaller {
-        private HashMap<String, String> queueItems = new HashMap<>();
+        private Map<String, String> queueItems = new HashMap<>();
         private int counter = 0;
 
         /**
diff --git a/wikipedia/src/main/java/org/wikipedia/history/HistoryFragment.java 
b/wikipedia/src/main/java/org/wikipedia/history/HistoryFragment.java
index b0b1fb4..757ec7b 100644
--- a/wikipedia/src/main/java/org/wikipedia/history/HistoryFragment.java
+++ b/wikipedia/src/main/java/org/wikipedia/history/HistoryFragment.java
@@ -55,6 +55,7 @@
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        setRetainInstance(true);
         app = WikipediaApp.getInstance();
     }
 
@@ -183,6 +184,7 @@
         super.onDestroyView();
     }
 
+    @Override
     public boolean onBackPressed() {
         if (actionMode != null) {
             actionMode.finish();
diff --git 
a/wikipedia/src/main/java/org/wikipedia/page/FindInPageActionProvider.java 
b/wikipedia/src/main/java/org/wikipedia/page/FindInPageActionProvider.java
index 913ed60..5b1d4ac 100644
--- a/wikipedia/src/main/java/org/wikipedia/page/FindInPageActionProvider.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/FindInPageActionProvider.java
@@ -66,8 +66,9 @@
         searchView.setOnQueryTextListener(searchQueryListener);
         searchView.setOnCloseListener(searchCloseListener);
         searchView.setIconified(false);
+        searchView.setMaxWidth(Integer.MAX_VALUE);
         searchView.setInputType(EditorInfo.TYPE_CLASS_TEXT);
-        searchView.setImeOptions(EditorInfo.IME_ACTION_DONE);
+        searchView.setImeOptions(EditorInfo.IME_ACTION_DONE | 
EditorInfo.IME_FLAG_NO_EXTRACT_UI);
         searchView.setSubmitButtonEnabled(false);
         // remove focus line from search plate
         View searchEditPlate = searchView
diff --git a/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java 
b/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
index 9e28cd0..f80aced 100644
--- a/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
@@ -33,6 +33,7 @@
 import com.squareup.otto.Subscribe;
 import de.keyboardsurfer.android.widget.crouton.Crouton;
 import de.keyboardsurfer.android.widget.crouton.Style;
+
 import android.app.AlertDialog;
 import android.app.SearchManager;
 import android.content.DialogInterface;
@@ -140,7 +141,7 @@
         app = (WikipediaApp) getApplicationContext();
 
         PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
-        setContentView(R.layout.activity_main);
+        setContentView(R.layout.activity_page);
 
         final Toolbar toolbar = (Toolbar) findViewById(R.id.main_toolbar);
         setSupportActionBar(toolbar);
@@ -849,16 +850,15 @@
      */
     @Override
     public void onSupportActionModeStarted(ActionMode mode) {
-        // Check what kind of ActionMode this is...
-        // If its tag is non-null, it means that the ActionMode is one of ours 
(History,
-        // Saved Pages, or Find In Page). Otherwise, it must be the default 
WebView text-
-        // highlighting ActionMode, in which case we'll invoke the Share 
adapter!
-        if (currentActionMode == null && mode.getTag() == null
-                && textSelectedShareAdapter != null) {
+        if (currentActionMode == null && textSelectedShareAdapter != null
+                && !isAppInitiatedActionMode(mode)) {
+            // Initiated by the system, likely in response to highlighting 
text in the WebView.
             textSelectedShareAdapter.onTextSelected(mode);
         }
+
         currentActionMode = mode;
         searchBarHideHandler.setForceNoFade(true);
+
         super.onSupportActionModeStarted(mode);
     }
 
@@ -872,4 +872,10 @@
     public void share() {
         noTextSelectedShareAdapter.share();
     }
+
+    private boolean isAppInitiatedActionMode(ActionMode mode) {
+        // ActionMode in non-WebView components (History, Saved Pages, or Find 
In Page) must call
+        // setTag().
+        return mode.getTag() != null;
+    }
 }
diff --git 
a/wikipedia/src/main/java/org/wikipedia/savedpages/SavedPagesFragment.java 
b/wikipedia/src/main/java/org/wikipedia/savedpages/SavedPagesFragment.java
index 49f394a..df493eb 100644
--- a/wikipedia/src/main/java/org/wikipedia/savedpages/SavedPagesFragment.java
+++ b/wikipedia/src/main/java/org/wikipedia/savedpages/SavedPagesFragment.java
@@ -51,6 +51,7 @@
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        setRetainInstance(true);
         app = WikipediaApp.getInstance();
     }
 
diff --git a/wikipedia/src/main/java/org/wikipedia/util/ApiUtil.java 
b/wikipedia/src/main/java/org/wikipedia/util/ApiUtil.java
new file mode 100644
index 0000000..9bee38e
--- /dev/null
+++ b/wikipedia/src/main/java/org/wikipedia/util/ApiUtil.java
@@ -0,0 +1,28 @@
+package org.wikipedia.util;
+
+import android.os.Build;
+
+public final class ApiUtil {
+    /** @return True if SDK API level is greater than or equal to 11. */
+    public static boolean hasHoneyComb() {
+        return has(Build.VERSION_CODES.HONEYCOMB);
+    }
+
+    /** @return SDK level. */
+    private static int getLevel() {
+        return android.os.Build.VERSION.SDK_INT;
+    }
+
+    /** @return True if SDK API is less than level. */
+    private static boolean isBefore(int level) {
+        return getLevel() < level;
+    }
+
+    /** @return True if SDK API  to level. */
+    private static boolean has(int level) {
+        return !isBefore(level);
+    }
+
+    private ApiUtil() {
+    }
+}
\ No newline at end of file
diff --git a/wikipedia/src/main/java/org/wikipedia/views/CabSearchView.java 
b/wikipedia/src/main/java/org/wikipedia/views/CabSearchView.java
new file mode 100644
index 0000000..f2e2192
--- /dev/null
+++ b/wikipedia/src/main/java/org/wikipedia/views/CabSearchView.java
@@ -0,0 +1,125 @@
+package org.wikipedia.views;
+
+import android.annotation.TargetApi;
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.os.Build;
+import android.support.annotation.NonNull;
+import android.support.v7.widget.SearchView;
+import android.util.AttributeSet;
+import android.view.ActionMode;
+import android.view.Menu;
+import android.view.MenuItem;
+
+import org.wikipedia.R;
+import org.wikipedia.util.ApiUtil;
+
+/** {@link SearchView} that exposes contextual action bar callbacks. */
+public class CabSearchView extends SearchView {
+    private static final boolean DEFAULT_CAB_ENABLED = true;
+    private static final ActionMode.Callback DEFAULT_CALLBACK;
+    static {
+        DEFAULT_CALLBACK = ApiUtil.hasHoneyComb() ? new DefaultCallback() : 
null;
+    }
+
+    @NonNull
+    private final SearchView.SearchAutoComplete mSearchSrcTextView;
+
+    @NonNull
+    private ActionMode.Callback mCallback = DEFAULT_CALLBACK;
+
+    private boolean mCabEnabled;
+
+    public CabSearchView(Context context) {
+        this(context, null);
+    }
+
+    public CabSearchView(Context context, AttributeSet attrs) {
+        this(context, attrs, 
android.support.v7.appcompat.R.attr.searchViewStyle);
+    }
+
+    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
+    public CabSearchView(Context context, AttributeSet attrs, int 
defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+
+        mSearchSrcTextView = (SearchAutoComplete) 
findViewById(R.id.search_src_text);
+        if (ApiUtil.hasHoneyComb()) {
+            mSearchSrcTextView.setCustomSelectionActionModeCallback(new 
CallbackWrapper());
+        }
+
+        initLayoutAttributes(attrs, defStyleAttr);
+    }
+
+    public ActionMode.Callback getCustomSelectionActionModeCallback() {
+        return mCallback == DEFAULT_CALLBACK ? null : mCallback;
+    }
+
+    public void setCustomSelectionActionModeCallback(ActionMode.Callback 
callback) {
+        mCallback = callback == null ? DEFAULT_CALLBACK : callback;
+    }
+
+    public boolean isCabEnabled() {
+        return mCabEnabled;
+    }
+
+    public void setCabEnabled(boolean enabled) {
+        mCabEnabled = enabled;
+    }
+
+    private void initLayoutAttributes(AttributeSet attrs, int defStyleAttr) {
+        TypedArray attrsArray = getContext().obtainStyledAttributes(attrs,
+                R.styleable.CabSearchView, defStyleAttr, 0);
+
+        if (ApiUtil.hasHoneyComb()) {
+            
setCabEnabled(attrsArray.getBoolean(R.styleable.CabSearchView_cabEnabled,
+                    DEFAULT_CAB_ENABLED));
+        }
+
+        attrsArray.recycle();
+    }
+
+    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
+    private class CallbackWrapper implements ActionMode.Callback {
+        @Override
+        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+            return isCabEnabled() && mCallback.onCreateActionMode(mode, menu);
+        }
+
+        @Override
+        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+            return mCallback.onPrepareActionMode(mode, menu);
+        }
+
+        @Override
+        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+            return mCallback.onActionItemClicked(mode, item);
+        }
+
+        @Override
+        public void onDestroyActionMode(ActionMode mode) {
+            mCallback.onDestroyActionMode(mode);
+        }
+    }
+
+    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
+    private static class DefaultCallback implements ActionMode.Callback {
+        @Override
+        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+            return true; // Show action bar.
+        }
+
+        @Override
+        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+            return false;
+        }
+
+        @Override
+        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+            return false;
+        }
+
+        @Override
+        public void onDestroyActionMode(ActionMode mode) {
+        }
+    }
+}
\ No newline at end of file

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Ia25dbfbd7cbc2e72e0da7c136fb3124a6196fb80
Gerrit-PatchSet: 4
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Niedzielski <[email protected]>
Gerrit-Reviewer: BearND <[email protected]>
Gerrit-Reviewer: Brion VIBBER <[email protected]>
Gerrit-Reviewer: Dbrant <[email protected]>
Gerrit-Reviewer: Mholloway <[email protected]>
Gerrit-Reviewer: Niedzielski <[email protected]>
Gerrit-Reviewer: Sniedzielski <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to