Merge "Re-notify if the network goes to PARTIAL." into qt-dev
diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java
index ee99837..dc3099d 100644
--- a/core/java/com/android/internal/app/ChooserActivity.java
+++ b/core/java/com/android/internal/app/ChooserActivity.java
@@ -716,18 +716,31 @@
     public void onConfigurationChanged(Configuration newConfig) {
         super.onConfigurationChanged(newConfig);
 
+        adjustPreviewWidth(newConfig.orientation, null);
+    }
+
+    private boolean shouldDisplayLandscape(int orientation) {
+        // Sharesheet fixes the # of items per row and therefore can not correctly lay out
+        // when in the restricted size of multi-window mode. In the future, would be nice
+        // to use minimum dp size requirements instead
+        return orientation == Configuration.ORIENTATION_LANDSCAPE && !isInMultiWindowMode();
+    }
+
+    private void adjustPreviewWidth(int orientation, View parent) {
         int width = -1;
-        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
+        if (shouldDisplayLandscape(orientation)) {
             width = getResources().getDimensionPixelSize(R.dimen.chooser_preview_width);
         }
 
-        updateLayoutWidth(R.id.content_preview_text_layout, width);
-        updateLayoutWidth(R.id.content_preview_title_layout, width);
-        updateLayoutWidth(R.id.content_preview_file_layout, width);
+        parent = parent == null ? getWindow().getDecorView() : parent;
+
+        updateLayoutWidth(R.id.content_preview_text_layout, width, parent);
+        updateLayoutWidth(R.id.content_preview_title_layout, width, parent);
+        updateLayoutWidth(R.id.content_preview_file_layout, width, parent);
     }
 
-    private void updateLayoutWidth(int layoutResourceId, int width) {
-        View view = findViewById(layoutResourceId);
+    private void updateLayoutWidth(int layoutResourceId, int width, View parent) {
+        View view = parent.findViewById(layoutResourceId);
         if (view != null && view.getLayoutParams() != null) {
             LayoutParams params = view.getLayoutParams();
             params.width = width;
@@ -740,18 +753,27 @@
             ViewGroup parent) {
         if (convertView != null) return convertView;
 
+        ViewGroup layout = null;
+
         switch (previewType) {
             case CONTENT_PREVIEW_TEXT:
-                return displayTextContentPreview(targetIntent, layoutInflater, parent);
+                layout = displayTextContentPreview(targetIntent, layoutInflater, parent);
+                break;
             case CONTENT_PREVIEW_IMAGE:
-                return displayImageContentPreview(targetIntent, layoutInflater, parent);
+                layout = displayImageContentPreview(targetIntent, layoutInflater, parent);
+                break;
             case CONTENT_PREVIEW_FILE:
-                return displayFileContentPreview(targetIntent, layoutInflater, parent);
+                layout = displayFileContentPreview(targetIntent, layoutInflater, parent);
+                break;
             default:
                 Log.e(TAG, "Unexpected content preview type: " + previewType);
         }
 
-        return null;
+        if (layout != null) {
+            adjustPreviewWidth(getResources().getConfiguration().orientation, layout);
+        }
+
+        return layout;
     }
 
     private ViewGroup displayTextContentPreview(Intent targetIntent, LayoutInflater layoutInflater,
@@ -2180,9 +2202,7 @@
         if (mChooserRowAdapter.consumeLayoutRequest()
                 || mChooserRowAdapter.calculateChooserTargetWidth(availableWidth)
                 || mAdapterView.getAdapter() == null) {
-            if (mAdapterView.getAdapter() == null) {
-                mAdapterView.setAdapter(mChooserRowAdapter);
-            }
+            mAdapterView.setAdapter(mChooserRowAdapter);
 
             getMainThreadHandler().post(() -> {
                 if (mResolverDrawerLayout == null || mChooserRowAdapter == null) {
@@ -2225,9 +2245,9 @@
                     }
                 }
 
-                boolean isPortrait = getResources().getConfiguration().orientation
-                                         == Configuration.ORIENTATION_PORTRAIT;
-                if (directShareHeight != 0 && isSendAction(getTargetIntent()) && isPortrait) {
+                boolean isExpandable = getResources().getConfiguration().orientation
+                        == Configuration.ORIENTATION_PORTRAIT && !isInMultiWindowMode();
+                if (directShareHeight != 0 && isSendAction(getTargetIntent()) && isExpandable) {
                     // make sure to leave room for direct share 4->8 expansion
                     int requiredExpansionHeight =
                             (int) (directShareHeight / DIRECT_SHARE_EXPANSION_RATE);
@@ -2791,8 +2811,7 @@
 
         private int getMaxTargetsPerRow() {
             int maxTargets = MAX_TARGETS_PER_ROW_PORTRAIT;
-            if (getResources().getConfiguration().orientation
-                    == Configuration.ORIENTATION_LANDSCAPE) {
+            if (shouldDisplayLandscape(getResources().getConfiguration().orientation)) {
                 maxTargets = MAX_TARGETS_PER_ROW_LANDSCAPE;
             }
 
@@ -3178,7 +3197,8 @@
             int orientation = getResources().getConfiguration().orientation;
             boolean canExpandDirectShare =
                     mChooserListAdapter.getNumShortcutResults() > getMaxTargetsPerRow()
-                    && orientation == Configuration.ORIENTATION_PORTRAIT;
+                    && orientation == Configuration.ORIENTATION_PORTRAIT
+                    && !isInMultiWindowMode();
 
             if (mDirectShareViewHolder != null && canExpandDirectShare) {
                 mDirectShareViewHolder.handleScroll(mAdapterView, y, oldy, getMaxTargetsPerRow());