<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>77464</bug_id>
          
          <creation_ts>2012-01-31 12:34:08 -0800</creation_ts>
          <short_desc>[chromium] LayerChromium::setNeedsDisplay does not apply contents scale correctly</short_desc>
          <delta_ts>2012-02-16 21:03:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>68075</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sami Kyostila">skyostil</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aelias</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>eric</cc>
    
    <cc>husky</cc>
    
    <cc>jamesr</cc>
    
    <cc>qinmin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>546370</commentid>
    <comment_count>0</comment_count>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2012-01-31 12:34:08 -0800</bug_when>
    <thetext>LayerChromium::setNeedsDisplay() internally uses contentBounds() to calculate that the layer region needing to be repainted. The problem is that setNeedsDisplayRect() expects CSS coordinates without the contents scale applied, while contentBounds() includes the contents scale factor.

The fix is to use bounds() to get the unscaled layer bounds. This leads to a second problem, however, that TiledLayerChromium::setNeedsDisplayRect() expects to receive coordinates with the contents scale applied. It uses the given rectangle to invalidate the underlying tiles, which leads to incorrect results if the rectangle is not scaled. This problem is remedied by scaling the rectangle passed into TiledLayerChromium::invalidate().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546372</commentid>
    <comment_count>1</comment_count>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2012-01-31 12:36:15 -0800</bug_when>
    <thetext>Ack, that last sentence should read &quot;scaling the rectangle before it is passed into TiledLayerChromium::invalidate().&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546389</commentid>
    <comment_count>2</comment_count>
      <attachid>124799</attachid>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2012-01-31 12:48:30 -0800</bug_when>
    <thetext>Created attachment 124799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556760</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-14 16:37:31 -0800</bug_when>
    <thetext>James is your best reviewer I think.

I&apos;ll make sure to grant you EditBugs/CanConfirm too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557562</commentid>
    <comment_count>4</comment_count>
      <attachid>124799</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-15 14:39:35 -0800</bug_when>
    <thetext>Comment on attachment 124799
Patch

What happens for a non-full-layer invalidation of a scaled layer?  I.e. if the layer&apos;s contents are 200x200 but it&apos;s displayed at 100x100, and WebKit sends us an invalidation rect 50x50@0x0, I think that should map to an invalidation of 50x50@0x0 on the tiles, not 25x25@0x0.  Right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557799</commentid>
    <comment_count>5</comment_count>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-02-15 18:22:06 -0800</bug_when>
    <thetext>*** Bug 78760 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558791</commentid>
    <comment_count>6</comment_count>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2012-02-16 18:37:38 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 124799 [details])
&gt; What happens for a non-full-layer invalidation of a scaled layer?  I.e. if the layer&apos;s contents are 200x200 but it&apos;s displayed at 100x100, and WebKit sends us an invalidation rect 50x50@0x0, I think that should map to an invalidation of 50x50@0x0 on the tiles, not 25x25@0x0.  Right?

This is a bit involved because page scale is handled differently for the root layer vs. child layers.

For the root layer, invalidations (setNeedsDisplayRect) are in scaled coordinates, because GraphicsLayer::setAppliesPageScale() is enabled, and as a result LayerChromium::contentsScale() is always 1. This means that setNeedsDisplayRect(50x50@0x0) from WebKit corresponds to 100x100@0x0 in CSS pixels, but is 50x50@0x0 in tile pixels. So assuming 100x100 pixel tiles, we would paint the upper left quadrant of the single tile backing the layer.

For child layers, WebKit&apos;s invalidation rects are given in unscaled coordinates. So in your example a setNeedsDisplayRect(50x50@0x0) from WebKit actually means the 50x50@0x0 CSS rectangle inside the layer, or 25x25@0x0 in tile pixels. Therefore we would paint 25x25@0x0 in the single backing tile.

If you think this is madness then I&apos;d tend to agree. I hope to make things a little more consistent once the dust settles.

Note that my patch does not change behavior for the root layer since contents scale is not used there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558792</commentid>
    <comment_count>7</comment_count>
      <attachid>127492</attachid>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2012-02-16 18:40:44 -0800</bug_when>
    <thetext>Created attachment 127492
Interactive page scaling

Here&apos;s a patch for debugging which allows you to change the page scale interactively with &apos;w&apos; and &apos;s&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558841</commentid>
    <comment_count>8</comment_count>
      <attachid>124799</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-16 20:07:28 -0800</bug_when>
    <thetext>Comment on attachment 124799
Patch

OK, thanks for the more detailed explanation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558876</commentid>
    <comment_count>9</comment_count>
      <attachid>124799</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-16 21:02:59 -0800</bug_when>
    <thetext>Comment on attachment 124799
Patch

Clearing flags on attachment: 124799

Committed r108025: &lt;http://trac.webkit.org/changeset/108025&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558877</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-16 21:03:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124799</attachid>
            <date>2012-01-31 12:48:30 -0800</date>
            <delta_ts>2012-02-16 21:02:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77464-20120131204828.patch</filename>
            <type>text/plain</type>
            <size>9093</size>
            <attacher name="Sami Kyostila">skyostil</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU5ODEzZTYzNjhlYmJk
YjVmMmIyZWY5NjNjYzVjYzI1NmNlNmYxZi4uNjk5NDkwMDY3Y2Q1N2NlZjU0NWQyZGNjYjhhNzk5
YWMzNTgwOWMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTAxLTMxICBTYW1p
IEt5b3N0aWxhICA8c2t5b3N0aWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5IGRvZXMgbm90IGFwcGx5IGNvbnRlbnRzIHNj
YWxlIGNvcnJlY3RseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Nzc0NjQKKworICAgICAgICBVc2UgYm91bmRzKCkgaW5zdGVhZCBvZiBjb250ZW50Qm91
bmRzKCkgdG8gY2FsY3VsYXRlIHRoZSByZWdpb24gdG8gbWFyaworICAgICAgICBhcyBuZWVkaW5n
IHBhaW50aW5nIGluIExheWVyQ2hyb21pdW06OnNldE5lZWRzRGlzcGxheSgpLiBjb250ZW50Qm91
bmRzKCkKKyAgICAgICAgaW5jbHVkZXMgY29udGVudHMgc2NhbGUsIHdoaWxlIGJvdW5kcygpIGRv
ZXMgbm90LgorCisgICAgICAgIFNpbmNlIHRoaXMgY2hhbmdlIGFsc28gbWVhbnMgdGhhdCBUaWxl
ZExheWVyQ2hyb21pdW06OnNldE5lZWRzRGlzcGxheVJlY3QoKSBpcworICAgICAgICBnaXZlbiBh
biB1bnNjYWxlZCByZWN0YW5nbGUsIG1vZGlmeSB0aGF0IGZ1bmN0aW9uIHRvIHNjYWxlIHRoZSBy
ZWN0YW5nbGUgYmVmb3JlCisgICAgICAgIHVzaW5nIGl0IHRvIGludmFsaWRhdGUgdGhlIHVuZGVy
bHlpbmcgdGlsZXMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGVzdHM6IE5ldyB0ZXN0cyBhZGRlZCB0byBMYXllckNocm9taXVtIGFuZCBUaWxlZExh
eWVyQ2hyb21pdW0gdW5pdCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06
OnNldE5lZWRzRGlzcGxheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGlsZWRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJv
bWl1bTo6c2V0TmVlZHNEaXNwbGF5UmVjdCk6CisKIDIwMTItMDEtMzEgIFBhYmxvIEZsb3VyZXQg
IDxwYWJsb2ZAbW90b3JvbGEuY29tPgogCiAgICAgICAgIEZpeCBjb21waWxhdGlvbiBlcnJvcnMg
b24gYnVpbGQtd2Via2l0IC0tZGVidWcgLS1uby13b3JrZXJzIG9uIG1hYy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggMDIwYWFiNmI3OWI2ODJkYzcxNzdmM2Y5YWJmMjAzNjI3NzNjNWU5
NC4uOTQ2MDdlNjNjOTc2ODBlODAxNTgxMjk0MTM5MjlmM2RjNDQwYTg3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0wMS0zMSAgU2FtaSBLeW9zdGls
YSAgPHNreW9zdGlsQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIExheWVyQ2hy
b21pdW06OnNldE5lZWRzRGlzcGxheSBkb2VzIG5vdCBhcHBseSBjb250ZW50cyBzY2FsZSBjb3Jy
ZWN0bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3
NDY0CisKKyAgICAgICAgQWRkZWQgYSBuZXcgdW5pdCB0ZXN0IGZvciBUaWxlZExheWVyQ2hyb21p
dW0gdG8gdmVyaWZ5IGl0cyBpbnZhbGlkYXRpb24gYmVoYXZpb3Igd2hlbgorICAgICAgICB0aGUg
Y29udGVudHMgc2NhbGUgY2hhbmdlcy4gQWxzbyBlbmhhbmNlIGFuZCBleGlzdGluZyB1bml0IHRl
c3QgZm9yIExheWVyQ2hyb21pdW0gdG8KKyAgICAgICAgdmVyaWZ5IHRoZSBwYWludCByZWN0YW5n
bGUgZGltZW5zaW9ucyBpbnN0ZWFkIGp1c3QgY2hlY2tpbmcgdGhhdCBpdCBpcyBub3QgZW1wdHku
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0
cy9MYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvVGlsZWRMYXllckNocm9t
aXVtVGVzdC5jcHA6CisgICAgICAgIChXVEY6OkZha2VUaWxlZExheWVyQ2hyb21pdW06OnNldE5l
ZWRzRGlzcGxheVJlY3QpOgorICAgICAgICAoRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSk6CisgICAg
ICAgIChXVEY6OkZha2VUaWxlZExheWVyQ2hyb21pdW06Omxhc3ROZWVkc0Rpc3BsYXlSZWN0KToK
KyAgICAgICAgKFdURjo6VEVTVCk6CisgICAgICAgIChXVEYpOgorCiAyMDEyLTAxLTMwICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTA2MzI0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDk0NWVlOGUx
YzRjNWI0NTU5NDMwN2E3NjJjZDYwMGI5NjY1ZTBhYTQuLjg1MWQxNGVlMGI4MDA4Njc0MTIxMzBj
ZTBlOWFmMjA0YjU2NWVlMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTEwMSw3ICsxMDEsNyBA
QCBwdWJsaWM6CiAgICAgTGF5ZXJDaHJvbWl1bSogbWFza0xheWVyKCkgY29uc3QgeyByZXR1cm4g
bV9tYXNrTGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXlS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgZGlydHlSZWN0KTsKLSAgICB2b2lkIHNldE5lZWRzRGlzcGxh
eSgpIHsgc2V0TmVlZHNEaXNwbGF5UmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBjb250ZW50
Qm91bmRzKCkpKTsgfQorICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgeyBzZXROZWVkc0Rpc3Bs
YXlSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGJvdW5kcygpKSk7IH0KICAgICB2aXJ0dWFs
IGJvb2wgbmVlZHNEaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Rpc3BsYXk7IH0KIAog
ICAgIHZvaWQgc2V0T3BhY2l0eShmbG9hdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNw
cAppbmRleCAwYjBjOWJmNGU3NjFhY2NmOWZhYWU0MGNjZmU0MjI0YWQwZmYzNTYwLi41ZGEwNDAz
MWFlZDMxNWE3MzM0NjgxMThmNjdlZmI5YTE0ODBmYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5jcHAKQEAgLTMwMSw3ICszMDEsOSBAQCBVcGRhdGFibGVUaWxlKiBUaWxlZExheWVy
Q2hyb21pdW06OmNyZWF0ZVRpbGUoaW50IGksIGludCBqKQogCiB2b2lkIFRpbGVkTGF5ZXJDaHJv
bWl1bTo6c2V0TmVlZHNEaXNwbGF5UmVjdChjb25zdCBGbG9hdFJlY3QmIGRpcnR5UmVjdCkKIHsK
LSAgICBJbnRSZWN0IGRpcnR5ID0gZW5jbG9zaW5nSW50UmVjdChkaXJ0eVJlY3QpOworICAgIEZs
b2F0UmVjdCBzY2FsZWREaXJ0eVJlY3QoZGlydHlSZWN0KTsKKyAgICBzY2FsZWREaXJ0eVJlY3Qu
c2NhbGUoY29udGVudHNTY2FsZSgpKTsKKyAgICBJbnRSZWN0IGRpcnR5ID0gZW5jbG9zaW5nSW50
UmVjdChzY2FsZWREaXJ0eVJlY3QpOwogICAgIGludmFsaWRhdGVSZWN0KGRpcnR5KTsKICAgICBM
YXllckNocm9taXVtOjpzZXROZWVkc0Rpc3BsYXlSZWN0KGRpcnR5UmVjdCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4
IDQzMDgzYTFkN2FiYjFiNDg1OGJjYTgxZjhjNzFmMjJjNjcwNDQ4NTMuLmQ1NTVhNmIzZDVmY2Mw
ZDc3MTVmZmRhMmNiZjkxZTYxZjhiYmI4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC01MzksMTAgKzUzOSwyMSBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIHZpcnR1YWwgdm9pZCBz
ZXROZWVkc0Rpc3BsYXlSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZGlydHlSZWN0KQorICAgIHsKKyAg
ICAgICAgbV9sYXN0TmVlZHNEaXNwbGF5UmVjdCA9IGRpcnR5UmVjdDsKKyAgICAgICAgTGF5ZXJD
aHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5UmVjdChkaXJ0eVJlY3QpOworICAgIH0KKwogICAgIHZv
aWQgcmVzZXROZWVkc0Rpc3BsYXkoKQogICAgIHsKICAgICAgICAgbV9uZWVkc0Rpc3BsYXkgPSBm
YWxzZTsKICAgICB9CisKKyAgICBjb25zdCBGbG9hdFJlY3QmIGxhc3ROZWVkc0Rpc3BsYXlSZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TmVlZHNEaXNwbGF5UmVjdDsgfQorCitwcml2YXRlOgor
ICAgIEZsb2F0UmVjdCBtX2xhc3ROZWVkc0Rpc3BsYXlSZWN0OwogfTsKIAogVEVTVF9GKExheWVy
Q2hyb21pdW1UZXN0LCBjaGVja0NvbnRlbnRzU2NhbGVDaGFuZ2VUcmlnZ2Vyc05lZWRzRGlzcGxh
eSkKQEAgLTU1OCw2ICs1NjksNyBAQCBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGNoZWNrQ29u
dGVudHNTY2FsZUNoYW5nZVRyaWdnZXJzTmVlZHNEaXNwbGF5KQogCiAgICAgRVhFQ1VURV9BTkRf
VkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRDb250ZW50
c1NjYWxlKHRlc3RMYXllci0+Y29udGVudHNTY2FsZSgpICsgMS5mKSk7CiAgICAgRVhQRUNUX1RS
VUUodGVzdExheWVyLT5uZWVkc0Rpc3BsYXkoKSk7CisgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEo
RmxvYXRSZWN0KDAsIDAsIDMyMCwgMjQwKSwgdGVzdExheWVyLT5sYXN0TmVlZHNEaXNwbGF5UmVj
dCgpKTsKIH0KIAogY2xhc3MgRmFrZUNDTGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBDQ0xheWVyVHJl
ZUhvc3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExh
eWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRM
YXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggYjg1MGY4MjQxY2MwODAxNDEzOGUzODA4YzA2MTRj
YTYxMDRlNjMyMS4uZDZlZDkxODcyN2YxNTY0NDM5ZWU0OWY5NjRmOWJlNmM3MmE3YzU3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1U
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwCkBAIC0xMzUsNiArMTM1LDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2tpcHNEcmF3KCk7CiAgICAgfQogCisgICAgdmlydHVhbCB2
b2lkIHNldE5lZWRzRGlzcGxheVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQorICAgIHsKKyAg
ICAgICAgbV9sYXN0TmVlZHNEaXNwbGF5UmVjdCA9IHJlY3Q7CisgICAgICAgIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5UmVjdChyZWN0KTsKKyAgICB9CisKKyAgICBjb25zdCBG
bG9hdFJlY3QmIGxhc3ROZWVkc0Rpc3BsYXlSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TmVl
ZHNEaXNwbGF5UmVjdDsgfQorCiAgICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIqIGZha2VMYXll
clRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV9mYWtlVGV4dHVyZVVwZGF0ZXIuZ2V0KCk7IH0K
IAogICAgIHZpcnR1YWwgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyKCkgY29uc3QgeyBy
ZXR1cm4gbV90ZXh0dXJlTWFuYWdlcjsgfQpAQCAtMTU0LDYgKzE2Miw3IEBAIHByaXZhdGU6CiAK
ICAgICBSZWZQdHI8RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI+IG1fZmFrZVRleHR1cmVVcGRhdGVy
OwogICAgIFRleHR1cmVNYW5hZ2VyKiBtX3RleHR1cmVNYW5hZ2VyOworICAgIEZsb2F0UmVjdCBt
X2xhc3ROZWVkc0Rpc3BsYXlSZWN0OwogfTsKIAogY2xhc3MgRmFrZVRpbGVkTGF5ZXJXaXRoU2Nh
bGVkQm91bmRzIDogcHVibGljIEZha2VUaWxlZExheWVyQ2hyb21pdW0gewpAQCAtNDA3LDYgKzQx
Niw1NyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeVVwZGF0ZVJlY3RXaGVu
Q29udGVudEJvdW5kc0FyZVNjYWxlZCkKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJl
Y3QoNDUsIDgwLCAxNSwgOCksIGxheWVyLT51cGRhdGVSZWN0KCkpOwogfQogCitURVNUKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250ZW50c1NjYWxlQ2hh
bmdlcykKK3sKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4
dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOworICAg
IFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtl
VGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgRGVidWdTY29w
ZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJ
bXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOwor
CisgICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKKyAgICBDQ1RleHR1
cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOworCisgICAgLy8gQ3JlYXRlIGEg
bGF5ZXIgd2l0aCBvbmUgdGlsZS4KKyAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAx
MDApKTsKKworICAgIC8vIEludmFsaWRhdGUgdGhlIGVudGlyZSBsYXllci4KKyAgICBsYXllci0+
c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0KDAs
IDAsIDEwMCwgMTAwKSwgbGF5ZXItPmxhc3ROZWVkc0Rpc3BsYXlSZWN0KCkpOworCisgICAgLy8g
UHVzaCB0aGUgdGlsZXMgdG8gdGhlIGltcGwgc2lkZSBhbmQgY2hlY2sgdGhhdCB0aGVyZSBpcyBl
eGFjdGx5IG9uZS4KKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAw
LCAxMDApKTsKKyAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVy
KTsKKyAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOworICAgIEVY
UEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDApKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
bGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMSkpOworICAgIEVYUEVDVF9GQUxTRShsYXllckltcGwt
Pmhhc1RpbGVBdCgxLCAwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGxheWVySW1wbC0+aGFzVGlsZUF0
KDEsIDEpKTsKKworICAgIC8vIENoYW5nZSB0aGUgY29udGVudHMgc2NhbGUgYW5kIHZlcmlmeSB0
aGF0IHRoZSBjb250ZW50IHJlY3RhbmdsZSByZXF1aXJpbmcgcGFpbnRpbmcKKyAgICAvLyBpcyBu
b3Qgc2NhbGVkLgorICAgIGxheWVyLT5zZXRDb250ZW50c1NjYWxlKDIpOworICAgIEVYUEVDVF9G
TE9BVF9SRUNUX0VRKEZsb2F0UmVjdCgwLCAwLCAxMDAsIDEwMCksIGxheWVyLT5sYXN0TmVlZHNE
aXNwbGF5UmVjdCgpKTsKKworICAgIC8vIFRoZSBpbXBsIHNpZGUgc2hvdWxkIGdldCAyeDIgdGls
ZXMgbm93LgorICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAyMDAsIDIw
MCkpOworICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwor
ICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CisgICAgRVhQRUNU
X1RSVUUobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkpOworICAgIEVYUEVDVF9UUlVFKGxheWVy
SW1wbC0+aGFzVGlsZUF0KDAsIDEpKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllckltcGwtPmhhc1Rp
bGVBdCgxLCAwKSk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMSwgMSkp
OworCisgICAgLy8gSW52YWxpZGF0ZSB0aGUgZW50aXJlIGxheWVyIGFnYWluLCBidXQgZG8gbm90
IHBhaW50LiBBbGwgdGlsZXMgc2hvdWxkIGJlIGdvbmUgbm93IGZyb20gdGhlCisgICAgLy8gaW1w
bCBzaWRlLgorICAgIGxheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICBsYXllci0+dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+cHVzaFByb3BlcnRp
ZXNUbyhsYXllckltcGwuZ2V0KCkpOworICAgIEVYUEVDVF9GQUxTRShsYXllckltcGwtPmhhc1Rp
bGVBdCgwLCAwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDEp
KTsKKyAgICBFWFBFQ1RfRkFMU0UobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMSwgMCkpOworICAgIEVY
UEVDVF9GQUxTRShsYXllckltcGwtPmhhc1RpbGVBdCgxLCAxKSk7Cit9CisKIFRFU1QoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgc2tpcHNEcmF3R2V0c1Jlc2V0KQogewogICAgIC8vIEluaXRpYWxp
emUgd2l0aG91dCB0aHJlYWRpbmcgc3VwcG9ydC4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127492</attachid>
            <date>2012-02-16 18:40:44 -0800</date>
            <delta_ts>2012-02-16 18:40:44 -0800</delta_ts>
            <desc>Interactive page scaling</desc>
            <filename>Interactive-page-scaling.patch</filename>
            <type>text/plain</type>
            <size>1890</size>
            <attacher name="Sami Kyostila">skyostil</attacher>
            
              <data encoding="base64">RnJvbSAyMTQ5ODc1MTE2MTNkODIxYTYyODIyNTQ3OGU1Nzc0Yzk3OWNmNTI0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTYW1pIEt5b3N0aWxhIDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+
CkRhdGU6IFdlZCwgOCBGZWIgMjAxMiAxNTo0OTozNSArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIERF
QlVHOiBJbnRlcmFjdGl2ZSBwYWdlIHNjYWxpbmcKCi0tLQogLi4uL2Nocm9taXVtL3NyYy9XZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAgfCAgIDE3ICsrKysrKysrKysrKysrKysrCiAx
IGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGwuY3BwCmluZGV4IDQwYzE1MWQuLjI1NjBmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbC5jcHAKQEAgLTEyMSw2ICsxMjEsMjMgQEAgdm9pZCBXZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbDo6aGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50JiBldmVudCkKICAg
ICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX2NsaWVudCk7
CiAKKyAgICBpZiAoZXZlbnQudHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpDaGFyKSB7CisgICAgICAg
IGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGtleUV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdl
YktleWJvYXJkRXZlbnQqPigmZXZlbnQpOworICAgICAgICBpZiAoa2V5RXZlbnQudGV4dFswXSA9
PSAndycpIHsKKyAgICAgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5waW5jaEdlc3R1cmVC
ZWdpbigpOworICAgICAgICAgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnBpbmNoR2VzdHVyZVVw
ZGF0ZSgxLjFmLCBJbnRQb2ludCgpKTsKKyAgICAgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50
LT5waW5jaEdlc3R1cmVFbmQoKTsKKyAgICAgICAgICAgIG1fY2xpZW50LT5kaWRIYW5kbGVJbnB1
dEV2ZW50KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gZWxzZSBpZiAoa2V5RXZl
bnQudGV4dFswXSA9PSAncycpIHsKKyAgICAgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5w
aW5jaEdlc3R1cmVCZWdpbigpOworICAgICAgICAgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnBp
bmNoR2VzdHVyZVVwZGF0ZSgwLjlmLCBJbnRQb2ludCgpKTsKKyAgICAgICAgICAgIG1faW5wdXRI
YW5kbGVyQ2xpZW50LT5waW5jaEdlc3R1cmVFbmQoKTsKKyAgICAgICAgICAgIG1fY2xpZW50LT5k
aWRIYW5kbGVJbnB1dEV2ZW50KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICB9CisKICAgICBpZiAoZXZlbnQudHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpNb3VzZVdoZWVsICYm
ICFtX2lucHV0SGFuZGxlckNsaWVudC0+aGF2ZVdoZWVsRXZlbnRIYW5kbGVycygpKSB7CiAgICAg
ICAgIGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYgd2hlZWxFdmVudCA9ICpzdGF0aWNfY2FzdDxj
b25zdCBXZWJNb3VzZVdoZWVsRXZlbnQqPigmZXZlbnQpOwogICAgICAgICBDQ0lucHV0SGFuZGxl
ckNsaWVudDo6U2Nyb2xsU3RhdHVzIHNjcm9sbFN0YXR1cyA9IG1faW5wdXRIYW5kbGVyQ2xpZW50
LT5zY3JvbGxCZWdpbihJbnRQb2ludCh3aGVlbEV2ZW50LngsIHdoZWVsRXZlbnQueSkpOwotLSAK
MS43LjcuMwoK
</data>

          </attachment>
      

    </bug>

</bugzilla>