Add SkAndroidCodec::computeSampledSize

Bug: b/63909536

Android's ImageDecoder API takes as input an arbitrary width and height
to scale the image to. Internally, this uses SkAndroidCodec to sample,
and then (if not a perfect match) scales to the desired size with
drawing.

computeSampledSize is a modified version of what ImageDecoder currently
does to convert from arbitrary dimensions to a sampleSize. Moving it
here allows it to be shared by SkAnimatedImage. The modified version
also corrects two bugs:
- a client using the dimensions returned by getSampledDimensions
  previously may have resulted in ImageDecoder decoding to a larger
  size and then scaling it. (example found in tests: dog.jpg is
  180 x 180. getSampledDimensions(8) returns 23 x 23, but the old
  method resulted in using sampleSize of 7 and downscaling the resulting
  25 x 25 image.)
- recompute the sampleSize based on the size returned by
  getSampledDimensions.

Change-Id: I022040e8bac31c20988903a0452257f7ae902bc7
Reviewed-on: https://skia-review.googlesource.com/94620
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
diff --git a/gn/tests.gni b/gn/tests.gni
index a4054b8..18defe8 100644
--- a/gn/tests.gni
+++ b/gn/tests.gni
@@ -7,6 +7,7 @@
 _tests = get_path_info("../tests", "abspath")
 
 tests_sources = [
+  "$_tests/AndroidCodecTest.cpp",
   "$_tests/AAClipTest.cpp",
   "$_tests/AnnotationTest.cpp",
   "$_tests/ApplyGammaTest.cpp",