Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java |
| index 8d95ad3e75f9c5cde4349f2a6334b641040fcf05..e8e03b1127d0a602744c381f9d1df9c25fda5256 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java |
| @@ -18,6 +18,7 @@ import android.graphics.Rect; |
| import android.graphics.drawable.ColorDrawable; |
| import android.graphics.drawable.Drawable; |
| import android.net.Uri; |
| +import android.os.AsyncTask; |
| import android.os.Build; |
| import android.os.Bundle; |
| import android.os.Looper; |
| @@ -123,7 +124,6 @@ import org.chromium.content.common.ContentSwitches; |
| import org.chromium.content_public.browser.ContentBitmapCallback; |
| import org.chromium.content_public.browser.LoadUrlParams; |
| import org.chromium.content_public.browser.WebContents; |
| -import org.chromium.content_public.browser.readback_types.ReadbackResponse; |
| import org.chromium.policy.CombinedPolicyProvider.PolicyChangeListener; |
| import org.chromium.printing.PrintManagerDelegateImpl; |
| import org.chromium.printing.PrintingController; |
| @@ -959,32 +959,42 @@ public abstract class ChromeActivity extends AsyncInitializationActivity |
| if (currentTab == null) return; |
| final Activity mainActivity = this; |
| - ContentBitmapCallback callback = new ContentBitmapCallback() { |
| - @Override |
| - public void onFinishGetBitmap(Bitmap bitmap, int response) { |
| - // Check whether this page is an offline page, and use its online URL if so. |
| - String url = currentTab.getOfflinePageOriginalUrl(); |
| - RecordHistogram.recordBooleanHistogram( |
| - "OfflinePages.SharedPageWasOffline", url != null); |
| - |
| - // If there is no entry in the offline pages DB for this tab, use the tab's |
| - // URL directly. |
| - if (url == null) url = currentTab.getUrl(); |
| - |
| - ShareHelper.share( |
| - shareDirectly, mainActivity, currentTab.getTitle(), url, bitmap); |
| - if (shareDirectly) { |
| - RecordUserAction.record("MobileMenuDirectShare"); |
| - } else { |
| - RecordUserAction.record("MobileMenuShare"); |
| - } |
| - } |
| - }; |
| + |
| + // Check whether this page is an offline page, and use its online URL if so. |
| + String url = currentTab.getOfflinePageOriginalUrl(); |
| + RecordHistogram.recordBooleanHistogram("OfflinePages.SharedPageWasOffline", url != null); |
| + // If there is no entry in the offline pages DB for this tab, use the tab's URL directly. |
| + if (url == null) url = currentTab.getUrl(); |
| + |
| + if (shareDirectly) { |
| + RecordUserAction.record("MobileMenuDirectShare"); |
| + } else { |
| + RecordUserAction.record("MobileMenuShare"); |
| + } |
| + |
| if (isIncognito || currentTab.getWebContents() == null) { |
| - callback.onFinishGetBitmap(null, ReadbackResponse.SURFACE_UNAVAILABLE); |
| + ShareHelper.share(shareDirectly, mainActivity, currentTab.getTitle(), url, null); |
| } else { |
| - currentTab.getWebContents().getContentBitmapAsync( |
| - Bitmap.Config.ARGB_8888, 1.f, EMPTY_RECT, callback); |
| + // Share an empty uuid in place of screenshot file. |
| + final String fileName = String.valueOf(System.currentTimeMillis()); |
|
nyquist
2016/07/14 17:36:32
Will the user ever see this filename? If not, mayb
ssid
2016/07/19 18:32:57
The uri wouldn't overlap with anything because the
nyquist
2016/07/29 23:45:27
That'd be OK too. I was just thinking about if you
ssid
2016/08/03 22:33:40
The description says it returns the difference bet
|
| + final Uri uuid = BlockingFileProvider.getContentUriForFile(mainActivity, fileName); |
| + ShareHelper.share(shareDirectly, mainActivity, currentTab.getTitle(), url, uuid); |
| + |
| + // Start screenshot capture async and notify the provider when it is ready. |
| + final ContentBitmapCallback callback = new ContentBitmapCallback() { |
| + @Override |
| + public void onFinishGetBitmap(Bitmap bitmap, int response) { |
| + ShareHelper.onScreenshotReady(fileName, bitmap, mainActivity); |
|
nyquist
2016/07/14 17:36:32
Is mainActivity guaranteed to be alive here, or wi
ssid
2016/07/19 18:32:57
The check at the end of onScreenshotready should t
|
| + } |
| + }; |
| + new AsyncTask<Void, Void, Void>() { |
| + @Override |
| + protected Void doInBackground(Void... params) { |
| + currentTab.getWebContents().getContentBitmapAsync( |
|
nyquist
2016/07/14 17:36:32
Is it guaranteed that getWebContents() does not re
ssid
2016/07/19 18:32:57
added a check
|
| + Bitmap.Config.ARGB_8888, 1.f, EMPTY_RECT, callback); |
| + return null; |
| + } |
| + }.execute(); |
| } |
| } |