diff options
author | jinsukkim <jinsukkim@chromium.org> | 2015-11-04 14:06:30 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-11-04 22:07:20 +0000 |
commit | c976d67ae3f549bda1bb322260310a22675df30c (patch) | |
tree | a0878c93743c0318687b8d230c923a6f4d05c5b0 | |
parent | b2a54a0f1e137cef8a163d4e9d8534314ee868e4 (diff) | |
download | chromium_src-c976d67ae3f549bda1bb322260310a22675df30c.zip chromium_src-c976d67ae3f549bda1bb322260310a22675df30c.tar.gz chromium_src-c976d67ae3f549bda1bb322260310a22675df30c.tar.bz2 |
Uses Window bounds for snapshot area
Passes the width/height info down to native snapshot routine
for the corresponding window bounds to be used for snapshotting.
BUG=548308
Review URL: https://codereview.chromium.org/1408193007
Cr-Commit-Position: refs/heads/master@{#357906}
-rw-r--r-- | chrome/android/java/src/org/chromium/chrome/browser/feedback/ScreenshotTask.java | 13 | ||||
-rw-r--r-- | chrome/browser/android/feedback/screenshot_task.cc | 9 |
2 files changed, 14 insertions, 8 deletions
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/feedback/ScreenshotTask.java b/chrome/android/java/src/org/chromium/chrome/browser/feedback/ScreenshotTask.java index 6874142..08be00a 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/feedback/ScreenshotTask.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/feedback/ScreenshotTask.java @@ -7,6 +7,7 @@ package org.chromium.chrome.browser.feedback; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.graphics.Rect; import org.chromium.base.ThreadUtils; import org.chromium.base.annotations.CalledByNative; @@ -47,7 +48,10 @@ public final class ScreenshotTask { */ public static void create(Activity activity, final ScreenshotTaskCallback callback) { if (activity instanceof ChromeActivity) { - createCompositorScreenshot(((ChromeActivity) activity).getWindowAndroid(), callback); + Rect rect = new Rect(); + activity.getWindow().getDecorView().getRootView().getWindowVisibleDisplayFrame(rect); + createCompositorScreenshot(((ChromeActivity) activity).getWindowAndroid(), rect, + callback); return; } @@ -72,7 +76,7 @@ public final class ScreenshotTask { } private static void createCompositorScreenshot(WindowAndroid windowAndroid, - final ScreenshotTaskCallback callback) { + Rect windowRect, final ScreenshotTaskCallback callback) { SnapshotResultCallback resultCallback = new SnapshotResultCallback() { @Override public void onCompleted(byte[] pngBytes) { @@ -80,7 +84,8 @@ public final class ScreenshotTask { ? BitmapFactory.decodeByteArray(pngBytes, 0, pngBytes.length) : null); } }; - nativeGrabWindowSnapshotAsync(resultCallback, windowAndroid.getNativePointer()); + nativeGrabWindowSnapshotAsync(resultCallback, windowAndroid.getNativePointer(), + windowRect.width(), windowRect.height()); } /** @@ -116,5 +121,5 @@ public final class ScreenshotTask { private ScreenshotTask() {} private static native void nativeGrabWindowSnapshotAsync(SnapshotResultCallback callback, - long nativeWindowAndroid); + long nativeWindowAndroid, int width, int height); } diff --git a/chrome/browser/android/feedback/screenshot_task.cc b/chrome/browser/android/feedback/screenshot_task.cc index 8864934..780b5f2 100644 --- a/chrome/browser/android/feedback/screenshot_task.cc +++ b/chrome/browser/android/feedback/screenshot_task.cc @@ -41,14 +41,15 @@ void SnapshotCallback(JNIEnv* env, void GrabWindowSnapshotAsync(JNIEnv* env, const JavaParamRef<jclass>& clazz, const JavaParamRef<jobject>& jcallback, - jlong native_window_android) { + jlong native_window_android, + jint window_width, + jint window_height) { WindowAndroid* window_android = reinterpret_cast<WindowAndroid*>( native_window_android); - // TODO(jinsukkim): Use window bounds once WindowAndroid provides it. - gfx::Display display = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay(); + gfx::Rect window_bounds(window_width, window_height); ui::GrabWindowSnapshotAsync( window_android, - display.bounds(), + window_bounds, base::ThreadTaskRunnerHandle::Get(), base::Bind(&SnapshotCallback, env, |