<?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>36665</bug_id>
          
          <creation_ts>2010-03-26 09:25:34 -0700</creation_ts>
          <short_desc>[v8] Page Cache does not work on Android</short_desc>
          <delta_ts>2010-03-29 04:49:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Android</rep_platform>
          <op_sys>Android</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrei Popescu">andreip</reporter>
          <assigned_to name="Ben Murdoch">benm</assigned_to>
          <cc>abarth</cc>
    
    <cc>ager</cc>
    
    <cc>android-webkit-unforking</cc>
    
    <cc>benm</cc>
    
    <cc>dglazkov</cc>
    
    <cc>levin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>204615</commentid>
    <comment_count>0</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-03-26 09:25:34 -0700</bug_when>
    <thetext>When enabling the page cache on Android and using V8, the browser crashes when navigating back in the history list. This is because the V8 bindings specific implementation of ScriptCachedFrameData is just a stub.

Patch for fixing this for Android coming soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204641</commentid>
    <comment_count>1</comment_count>
      <attachid>51755</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-03-26 09:54:57 -0700</bug_when>
    <thetext>Created attachment 51755
Implement ScriptCachedFrameData on Android</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204642</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-26 09:56:28 -0700</bug_when>
    <thetext>Attachment 51755 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/ChangeLog:15:  Line contains tab character.  [whitespace/tab] [5]
WebCore/bindings/v8/ScriptCachedFrameData.h:67:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204648</commentid>
    <comment_count>3</comment_count>
      <attachid>51756</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-03-26 10:05:20 -0700</bug_when>
    <thetext>Created attachment 51756
Implement ScriptCachedFrameData on Android (take 2)

Fixed style, both in the code that I added and in the existing code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204649</commentid>
    <comment_count>4</comment_count>
      <attachid>51755</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-26 10:08:01 -0700</bug_when>
    <thetext>Comment on attachment 51755
Implement ScriptCachedFrameData on Android

&gt;+	Note that isolated worlds are not taken into account in any way,

Tab?

&gt;+ * Copyright 2010, The Android Open Source Project

I&apos;m not sure we can accept this sort of copyright line.  We&apos;ve been told not to
accept &quot;the chromium authors&quot;.  Not sure how that applies here.

&gt;+#if PLATFORM(ANDROID)

Why is this android specific?  Seems like anyone who wants to use page cache
and v8 will want this.

&gt;+ScriptCachedFrameData::ScriptCachedFrameData(Frame* frame) : m_domWindow(frame-&gt;domWindow())

Please move initializer to the next line.

&gt;+    m_context-&gt;ReattachGlobal(m_global);

I&apos;m worried that m_global might be the global object from an isolated world. 
Do we understand how this code interacts with isolated worlds?  We might want
something either here or when we grab the global to make sure that we&apos;re
getting the main world&apos;s object.

&gt;- * Copyright (C) 2008, 2009 Google Inc. All rights reserved.
&gt;+ * Copyright (C) 2008, 2009, 2010 Google Inc. All rights reserved.

You just need the latest year.

&gt;+#if PLATFORM(CHROMIUM)
&gt; // We don&apos;t use WebKit&apos;s page caching, so this implementation is just a stub.

Gain, this had nothing to do with CHROMIUM / ANDROID.  There&apos;s already a bit
somewhere that says whether PageCache is enabled.  We should key off of that.

&gt;+// FIXME: the right guard should be ENABLE(PAGE_CACHE). Replace with the right guard, once
&gt;+// https://bugs.webkit.org/show_bug.cgi?id=35061 is fixed.
&gt;+//
&gt;+// On Android we do use WebKit&apos;s page cache. For now we don&apos;t support isolated worlds
&gt;+// so our implementation does not take them into account.

Ah, I see.  Can you add some nasty ASSERTS about this so we don&apos;t turn this on
by accident and not realize the mess we&apos;ve gotten ourselves into?

&gt;+        v8::Persistent&lt;v8::Object&gt; m_global;
&gt;+        v8::Persistent&lt;v8::Context&gt; m_context;

Please use OwnHandle so you don&apos;t have to manually alloc and free these
persistent handles.

&gt;+void V8DOMWindowShell::setContext(v8::Handle&lt;v8::Context&gt; context)
&gt;+{
&gt;+    m_context = v8::Persistent&lt;v8::Context&gt;::New(context);
&gt;+}

Does this leak the persistent handle to the old m_context?  Do we need to
ASSERT that m_context is always empty here?  Should we use OwnHandle to help us
manage the lifetime of the persistent handle?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204651</commentid>
    <comment_count>5</comment_count>
      <attachid>51756</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-26 10:08:43 -0700</bug_when>
    <thetext>Comment on attachment 51756
Implement ScriptCachedFrameData on Android (take 2)

See comments above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204703</commentid>
    <comment_count>6</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-03-26 11:57:08 -0700</bug_when>
    <thetext>Hi Adam,

Many thanks for the quick reply.

(In reply to comment #4)
&gt; (From update of attachment 51755 [details])
&gt; &gt;+	Note that isolated worlds are not taken into account in any way,
&gt; 
&gt; Tab?
&gt; 

Fixed.

&gt; &gt;+ * Copyright 2010, The Android Open Source Project
&gt; 
&gt; I&apos;m not sure we can accept this sort of copyright line.  We&apos;ve been told not to
&gt; accept &quot;the chromium authors&quot;.  Not sure how that applies here.
&gt;

Well, I am from Android and our previous contributions all had the same copyright line. For example see:

http://trac.webkit.org/browser/trunk/WebCore/page/GeolocationPositionCache.cpp
http://trac.webkit.org/browser/trunk/WebCore/page/Geolocation.cpp

Given these and other precedents, I think it should be fine to keep the current copyright?
 
&gt; &gt;+#if PLATFORM(ANDROID)
&gt; 
&gt; Why is this android specific?  Seems like anyone who wants to use page cache
&gt; and v8 will want this.
&gt; 

Ok, removed.

&gt; &gt;+ScriptCachedFrameData::ScriptCachedFrameData(Frame* frame) : m_domWindow(frame-&gt;domWindow())
&gt; 
&gt; Please move initializer to the next line.
&gt; 

Moved.

&gt; &gt;+    m_context-&gt;ReattachGlobal(m_global);
&gt; 
&gt; I&apos;m worried that m_global might be the global object from an isolated world. 
&gt; Do we understand how this code interacts with isolated worlds?  We might want
&gt; something either here or when we grab the global to make sure that we&apos;re
&gt; getting the main world&apos;s object.
&gt;

True, although I&apos;d stay away from that until Android starts using isolated worlds. Else, if Chromium want page cache, somebody who understand isolated worlds better than me should do this change?

 
&gt; &gt;- * Copyright (C) 2008, 2009 Google Inc. All rights reserved.
&gt; &gt;+ * Copyright (C) 2008, 2009, 2010 Google Inc. All rights reserved.
&gt; 
&gt; You just need the latest year.
&gt; 

Fixed.

&gt; &gt;+#if PLATFORM(CHROMIUM)
&gt; &gt; // We don&apos;t use WebKit&apos;s page caching, so this implementation is just a stub.
&gt; 
&gt; Gain, this had nothing to do with CHROMIUM / ANDROID.  There&apos;s already a bit
&gt; somewhere that says whether PageCache is enabled.  We should key off of that.
&gt; 

Hmm, I looked but all I found was a bug for it:

https://bugs.webkit.org/show_bug.cgi?id=35061

It&apos;s also possible that I missed something. If so, please let me know.

&gt; &gt;+// FIXME: the right guard should be ENABLE(PAGE_CACHE). Replace with the right guard, once
&gt; &gt;+// https://bugs.webkit.org/show_bug.cgi?id=35061 is fixed.
&gt; &gt;+//
&gt; &gt;+// On Android we do use WebKit&apos;s page cache. For now we don&apos;t support isolated worlds
&gt; &gt;+// so our implementation does not take them into account.
&gt; 
&gt; Ah, I see.  Can you add some nasty ASSERTS about this so we don&apos;t turn this on
&gt; by accident and not realize the mess we&apos;ve gotten ourselves into?
&gt; 

Good point. Added a scary assert, it holds on Android but haven&apos;t tested on Chromium. Please have a look, I can add more if you have any suggestions.

&gt; &gt;+        v8::Persistent&lt;v8::Object&gt; m_global;
&gt; &gt;+        v8::Persistent&lt;v8::Context&gt; m_context;
&gt; 
&gt; Please use OwnHandle so you don&apos;t have to manually alloc and free these
&gt; persistent handles.
&gt; 

Oh, I didn&apos;t know about that one, thanks!

&gt; &gt;+void V8DOMWindowShell::setContext(v8::Handle&lt;v8::Context&gt; context)
&gt; &gt;+{
&gt; &gt;+    m_context = v8::Persistent&lt;v8::Context&gt;::New(context);
&gt; &gt;+}
&gt; 
&gt; Does this leak the persistent handle to the old m_context?  Do we need to
&gt; ASSERT that m_context is always empty here?  Should we use OwnHandle to help us
&gt; manage the lifetime of the persistent handle?

Well spotted, it won&apos;t always be empty. And indeed, I added the ASSERT and it doesn&apos;t hold. 

I think it&apos;s better to clear the previous context manually and stick to using a persistent handle. If we move to an OwnHandle, this change becomes quite intrusive as I would have to change about 30 sites to call get() instead of accessing m_context directly. But if you really think OwnHandle is better, I can do that.

Many thanks,
Andrei</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204705</commentid>
    <comment_count>7</comment_count>
      <attachid>51769</attachid>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-03-26 11:57:40 -0700</bug_when>
    <thetext>Created attachment 51769
Implement ScriptCachedFrameData on Android (take 3)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204720</commentid>
    <comment_count>8</comment_count>
      <attachid>51769</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-26 12:42:11 -0700</bug_when>
    <thetext>Comment on attachment 51769
Implement ScriptCachedFrameData on Android (take 3)

+ namespace WebCore {

We usually like a blank line after the namespace declaration.

I don&apos;t see restore() or clear() called anywhere.  Maybe that&apos;s for a future patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204726</commentid>
    <comment_count>9</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-03-26 12:47:43 -0700</bug_when>
    <thetext>Thanks a lot for the r+ :)

(In reply to comment #8)
&gt; (From update of attachment 51769 [details])
&gt; + namespace WebCore {
&gt; 
&gt; We usually like a blank line after the namespace declaration.
&gt; 
&gt; I don&apos;t see restore() or clear() called anywhere.  Maybe that&apos;s for a future
&gt; patch?

Oh, they are called already by WebCore&apos;s page cache mechanism:

http://trac.webkit.org/browser/trunk/WebCore/history/CachedFrame.cpp#L85
and
http://trac.webkit.org/browser/trunk/WebCore/history/CachedFrame.cpp#L196

Thanks,
Andrei</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205403</commentid>
    <comment_count>10</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2010-03-29 04:28:30 -0700</bug_when>
    <thetext>Will add newlines as per last review comment and land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205405</commentid>
    <comment_count>11</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2010-03-29 04:49:36 -0700</bug_when>
    <thetext>Sending        WebCore/ChangeLog
Adding         WebCore/bindings/v8/ScriptCachedFrameData.cpp
Sending        WebCore/bindings/v8/ScriptCachedFrameData.h
Sending        WebCore/bindings/v8/V8DOMWindowShell.cpp
Sending        WebCore/bindings/v8/V8DOMWindowShell.h
Transmitting file data .....
Committed revision 56716.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51755</attachid>
            <date>2010-03-26 09:54:57 -0700</date>
            <delta_ts>2010-03-26 10:08:01 -0700</delta_ts>
            <desc>Implement ScriptCachedFrameData on Android</desc>
            <filename>36665.patch</filename>
            <type>text/plain</type>
            <size>7297</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjYzMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTAtMDMtMjYgIEFuZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBhZ2UgQ2FjaGUgZG9lcyBub3Qgd29yayBvbiBBbmRyb2lkIHdpdGggVjgKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NjY1CisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCBleGlzdGluZyB0ZXN0cyBzaG91bGQgc3VmZmljZSwgdGhpcyBpcyBwbGF0Zm9y
bSBjb2RlLgorCisgICAgICAgIFRoaXMgaW1wbGVtZW50YXRpb24gc2ltcGx5IHNhdmVzIHRoZSBj
b250ZXh0IGFuZCB0aGUgZ2xvYmFsIG9iamVjdAorICAgICAgICBqdXN0IGJlZm9yZSB0aGUgZnJh
bWUgaXMgbmF2aWdhdGVkIHRvIGEgbmV3IHVybC4gQXQgcmVzdG9yZSB0aW1lLAorICAgICAgICB0
aGUgZ2xvYmFsIG9iamVjdCBpcyByZWF0dGFjaGVkIHRvIHRoZSBjb250ZXh0IGFuZCB0aGUgY29u
dGV4dAorICAgICAgICBpcyBhdHRhY2hlZCB0byB0aGUgd2luZG93IHNoZWxsIG9mIHRoZSBmcmFt
ZS4KKworCU5vdGUgdGhhdCBpc29sYXRlZCB3b3JsZHMgYXJlIG5vdCB0YWtlbiBpbnRvIGFjY291
bnQgaW4gYW55IHdheSwKKyAgICAgICAgYXMgQW5kcm9pZCBkb2VzIG5vdCB1c2UgdGhlbS4KKwor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpTY3JpcHRDYWNoZWRGcmFt
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpkb21XaW5k
b3cpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjp+U2NyaXB0Q2Fj
aGVkRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6
cmVzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWNoZWRGcmFtZURhdGE6OmNsZWFy
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4RE9NV2luZG93U2hlbGw6OnNldENvbnRleHQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
RE9NV2luZG93U2hlbGwuaDoKKwogMjAxMC0wMy0yNiAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IDIwMTAsIFRo
ZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmgiCisKKyNpZiBQTEFURk9STShBTkRS
T0lEKQorCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgi
CisjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTY3Jp
cHRDYWNoZWRGcmFtZURhdGE6OlNjcmlwdENhY2hlZEZyYW1lRGF0YShGcmFtZSogZnJhbWUpIDog
bV9kb21XaW5kb3coZnJhbWUtPmRvbVdpbmRvdygpKQoreworICAgIHY4OjpIYW5kbGVTY29wZSBo
YW5kbGVTY29wZTsKKyAgICBtX2NvbnRleHQgPSB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD46
Ok5ldyhWOFByb3h5Ojpjb250ZXh0KGZyYW1lKSk7CisgICAgbV9nbG9iYWwgPSB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0Pjo6TmV3KG1fY29udGV4dC0+R2xvYmFsKCkpOworfQorCitET01XaW5k
b3cqIFNjcmlwdENhY2hlZEZyYW1lRGF0YTo6ZG9tV2luZG93KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9kb21XaW5kb3c7Cit9CisKK1NjcmlwdENhY2hlZEZyYW1lRGF0YTo6flNjcmlwdENhY2hl
ZEZyYW1lRGF0YSgpCit7CisgICAgY2xlYXIoKTsKK30KKwordm9pZCBTY3JpcHRDYWNoZWRGcmFt
ZURhdGE6OnJlc3RvcmUoRnJhbWUqIGZyYW1lKQoreworICAgIHY4OjpIYW5kbGVTY29wZSBoYW5k
bGVTY29wZTsKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKG1fY29udGV4dCk7
CisKKyAgICBtX2NvbnRleHQtPlJlYXR0YWNoR2xvYmFsKG1fZ2xvYmFsKTsKKyAgICBWOFByb3h5
KiBwcm94eSA9IFY4UHJveHk6OnJldHJpZXZlKGZyYW1lKTsKKyAgICBpZiAocHJveHkpCisgICAg
ICAgIHByb3h5LT53aW5kb3dTaGVsbCgpLT5zZXRDb250ZXh0KG1fY29udGV4dCk7Cit9CisKK3Zv
aWQgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpjbGVhcigpCit7CisgICAgbV9jb250ZXh0LkRpc3Bv
c2UoKTsKKyAgICBtX2NvbnRleHQuQ2xlYXIoKTsKKyAgICBtX2dsb2JhbC5EaXNwb3NlKCk7Cisg
ICAgbV9nbG9iYWwuQ2xlYXIoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gUExBVEZPUk0oQU5EUk9JRCkKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
Q2FjaGVkRnJhbWVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRDYWNoZWRGcmFtZURhdGEuaAkocmV2aXNpb24gNTQxMjcpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC0zMSw2ICszMSw3IEBACiAjaWZuZGVmIFNjcmlwdENhY2hlZFBhZ2VEYXRhX2gKICNkZWZp
bmUgU2NyaXB0Q2FjaGVkUGFnZURhdGFfaAogCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAvLyBX
ZSBkb24ndCB1c2UgV2ViS2l0J3MgcGFnZSBjYWNoaW5nLCBzbyB0aGlzIGltcGxlbWVudGF0aW9u
IGlzIGp1c3QgYSBzdHViLgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OSw0ICs1MCwzOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorI2VsaWYg
UExBVEZPUk0oQU5EUk9JRCkKKy8vIEZJWE1FOiB0aGUgcmlnaHQgZ3VhcmQgc2hvdWxkIGJlIEVO
QUJMRShQQUdFX0NBQ0hFKS4gUmVwbGFjZSB3aXRoIHRoZSByaWdodCBndWFyZCwgb25jZQorLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MDYxIGlzIGZpeGVkLgor
Ly8KKy8vIE9uIEFuZHJvaWQgd2UgZG8gdXNlIFdlYktpdCdzIHBhZ2UgY2FjaGUuIEZvciBub3cg
d2UgZG9uJ3Qgc3VwcG9ydCBpc29sYXRlZCB3b3JsZHMKKy8vIHNvIG91ciBpbXBsZW1lbnRhdGlv
biBkb2VzIG5vdCB0YWtlIHRoZW0gaW50byBhY2NvdW50LgorCisjaW5jbHVkZSA8djguaD4KKyNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNs
YXNzIEZyYW1lOworICAgIGNsYXNzIERPTVdpbmRvdzsKKworICBjbGFzcyBTY3JpcHRDYWNoZWRG
cmFtZURhdGEgIDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFNj
cmlwdENhY2hlZEZyYW1lRGF0YShGcmFtZSopOworICAgICAgICB+U2NyaXB0Q2FjaGVkRnJhbWVE
YXRhKCk7CisKKyAgICAgICAgdm9pZCByZXN0b3JlKEZyYW1lKik7CisgICAgICAgIHZvaWQgY2xl
YXIoKTsKKyAgICAgICAgRE9NV2luZG93KiBkb21XaW5kb3coKSBjb25zdDsKKworICAgIHByaXZh
dGU6CisgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IG1fZ2xvYmFsOworICAgICAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gbV9jb250ZXh0OworICAgICAgICBET01XaW5k
b3cqIG1fZG9tV2luZG93OworICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vs
c2UKKyNlcnJvciBZb3UgbmVlZCB0byBjb25zaWRlciB3aGV0aGVyIHlvdSB3YW50IFBhZ2UgQ2Fj
aGUgYW5kIGVpdGhlciBhZGQgYSBzdHViIG9yIGEgcmVhbCBpbXBsZW1lbnRhdGlvbi4KKyNlbmRp
ZiAvLyBQTEFURk9STShDSFJPTUlVTSkKKwogI2VuZGlmIC8vIFNjcmlwdENhY2hlZFBhZ2VEYXRh
X2gKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAkocmV2aXNp
b24gNTQxMjcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNTYsNiArMzU2LDExIEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpDb250
ZXh0PiBWOERPTVdpbmRvd1MKICAgICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIFY4RE9NV2lu
ZG93U2hlbGw6OnNldENvbnRleHQodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCkKK3sK
KyAgICBtX2NvbnRleHQgPSB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD46Ok5ldyhjb250ZXh0
KTsKK30KKwogYm9vbCBWOERPTVdpbmRvd1NoZWxsOjppbnN0YWxsRE9NV2luZG93KHY4OjpIYW5k
bGU8djg6OkNvbnRleHQ+IGNvbnRleHQsIERPTVdpbmRvdyogd2luZG93KQogewogICAgIHY4OjpI
YW5kbGU8djg6OlN0cmluZz4gaW1wbGljaXRQcm90b1N0cmluZyA9IHY4OjpTdHJpbmc6Ok5ldygi
X19wcm90b19fIik7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaAko
cmV2aXNpb24gNTQxMjcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwu
aAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Nv
bnRleHRJbml0aWFsaXplZCgpOwogCiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+IGNy
ZWF0ZU5ld0NvbnRleHQodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnbG9iYWwsIGludCBleHRlbnNp
b25Hcm91cCk7CisgICAgdm9pZCBzZXRDb250ZXh0KHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KTsK
ICAgICBzdGF0aWMgYm9vbCBpbnN0YWxsRE9NV2luZG93KHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
IGNvbnRleHQsIERPTVdpbmRvdyopOwogCiAgICAgdm9pZCBpbml0Q29udGV4dElmTmVlZGVkKCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51756</attachid>
            <date>2010-03-26 10:05:20 -0700</date>
            <delta_ts>2010-03-26 10:08:43 -0700</delta_ts>
            <desc>Implement ScriptCachedFrameData on Android (take 2)</desc>
            <filename>36665.patch</filename>
            <type>text/plain</type>
            <size>7940</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjYzMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTAtMDMtMjYgIEFuZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBhZ2UgQ2FjaGUgZG9lcyBub3Qgd29yayBvbiBBbmRyb2lkIHdpdGggVjgKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NjY1CisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCBleGlzdGluZyB0ZXN0cyBzaG91bGQgc3VmZmljZSwgdGhpcyBpcyBwbGF0Zm9y
bSBjb2RlLgorCisgICAgICAgIFRoaXMgaW1wbGVtZW50YXRpb24gc2ltcGx5IHNhdmVzIHRoZSBj
b250ZXh0IGFuZCB0aGUgZ2xvYmFsIG9iamVjdAorICAgICAgICBqdXN0IGJlZm9yZSB0aGUgZnJh
bWUgaXMgbmF2aWdhdGVkIHRvIGEgbmV3IHVybC4gQXQgcmVzdG9yZSB0aW1lLAorICAgICAgICB0
aGUgZ2xvYmFsIG9iamVjdCBpcyByZWF0dGFjaGVkIHRvIHRoZSBjb250ZXh0IGFuZCB0aGUgY29u
dGV4dAorICAgICAgICBpcyBhdHRhY2hlZCB0byB0aGUgd2luZG93IHNoZWxsIG9mIHRoZSBmcmFt
ZS4KKworICAgICAgICBOb3RlIHRoYXQgaXNvbGF0ZWQgd29ybGRzIGFyZSBub3QgdGFrZW4gaW50
byBhY2NvdW50IGluIGFueSB3YXksCisgICAgICAgIGFzIEFuZHJvaWQgZG9lcyBub3QgdXNlIHRo
ZW0uCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6U2NyaXB0Q2Fj
aGVkRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6
ZG9tV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6flNj
cmlwdENhY2hlZEZyYW1lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWNoZWRGcmFt
ZURhdGE6OnJlc3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FjaGVkRnJhbWVEYXRh
OjpjbGVhcik6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmg6
CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpzZXRDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOERPTVdpbmRvd1NoZWxsLmg6CisKIDIwMTAtMDMtMjYgIEFuZHJleSBLb3N5YWtvdiAg
PGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFu
LgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNw
cAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FjaGVkRnJhbWVE
YXRhLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAy
MDEwLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlNjcmlwdENhY2hlZEZyYW1lRGF0YS5oIgorCisjaWYgUExBVEZP
Uk0oQU5EUk9JRCkKKworI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJv
bGxlci5oIgorI2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworU2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpTY3JpcHRDYWNoZWRGcmFtZURhdGEoRnJhbWUqIGZy
YW1lKSA6IG1fZG9tV2luZG93KGZyYW1lLT5kb21XaW5kb3coKSkKK3sKKyAgICB2ODo6SGFuZGxl
U2NvcGUgaGFuZGxlU2NvcGU7CisgICAgbV9jb250ZXh0ID0gdjg6OlBlcnNpc3RlbnQ8djg6OkNv
bnRleHQ+OjpOZXcoVjhQcm94eTo6Y29udGV4dChmcmFtZSkpOworICAgIG1fZ2xvYmFsID0gdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhtX2NvbnRleHQtPkdsb2JhbCgpKTsKK30KKwor
RE9NV2luZG93KiBTY3JpcHRDYWNoZWRGcmFtZURhdGE6OmRvbVdpbmRvdygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fZG9tV2luZG93OworfQorCitTY3JpcHRDYWNoZWRGcmFtZURhdGE6On5TY3Jp
cHRDYWNoZWRGcmFtZURhdGEoKQoreworICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgU2NyaXB0Q2Fj
aGVkRnJhbWVEYXRhOjpyZXN0b3JlKEZyYW1lKiBmcmFtZSkKK3sKKyAgICB2ODo6SGFuZGxlU2Nv
cGUgaGFuZGxlU2NvcGU7CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShtX2Nv
bnRleHQpOworCisgICAgbV9jb250ZXh0LT5SZWF0dGFjaEdsb2JhbChtX2dsb2JhbCk7CisgICAg
VjhQcm94eSogcHJveHkgPSBWOFByb3h5OjpyZXRyaWV2ZShmcmFtZSk7CisgICAgaWYgKHByb3h5
KQorICAgICAgICBwcm94eS0+d2luZG93U2hlbGwoKS0+c2V0Q29udGV4dChtX2NvbnRleHQpOwor
fQorCit2b2lkIFNjcmlwdENhY2hlZEZyYW1lRGF0YTo6Y2xlYXIoKQoreworICAgIG1fY29udGV4
dC5EaXNwb3NlKCk7CisgICAgbV9jb250ZXh0LkNsZWFyKCk7CisgICAgbV9nbG9iYWwuRGlzcG9z
ZSgpOworICAgIG1fZ2xvYmFsLkNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIFBMQVRGT1JNKEFORFJPSUQpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmgJKHJldmlzaW9uIDU0MTI3KQorKysgV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQpAQCAtMjgsMjUgKzI4LDYxIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgU2NyaXB0Q2FjaGVkUGFnZURhdGFfaAotI2RlZmluZSBTY3JpcHRDYWNoZWRQYWdlRGF0YV9o
CisjaWZuZGVmIFNjcmlwdENhY2hlZEZyYW1lRGF0YV9oCisjZGVmaW5lIFNjcmlwdENhY2hlZEZy
YW1lRGF0YV9oCiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKIC8vIFdlIGRvbid0IHVzZSBXZWJL
aXQncyBwYWdlIGNhY2hpbmcsIHNvIHRoaXMgaW1wbGVtZW50YXRpb24gaXMganVzdCBhIHN0dWIu
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBGcmFtZTsKLSAgICBjbGFzcyBET01X
aW5kb3c7CitjbGFzcyBGcmFtZTsKK2NsYXNzIERPTVdpbmRvdzsKIAotICAgIGNsYXNzIFNjcmlw
dENhY2hlZEZyYW1lRGF0YSAgewotICAgIHB1YmxpYzoKLSAgICAgICAgU2NyaXB0Q2FjaGVkRnJh
bWVEYXRhKEZyYW1lKikgeyB9Ci0gICAgICAgIH5TY3JpcHRDYWNoZWRGcmFtZURhdGEoKSB7IH0K
LQotICAgICAgICB2b2lkIHJlc3RvcmUoRnJhbWUqKSB7IH0KLSAgICAgICAgdm9pZCBjbGVhcigp
IHsgfQotICAgICAgICBET01XaW5kb3cqIGRvbVdpbmRvdygpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
LSAgICB9OworY2xhc3MgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhICB7CitwdWJsaWM6CisgICAgU2Ny
aXB0Q2FjaGVkRnJhbWVEYXRhKEZyYW1lKikgeyB9CisgICAgflNjcmlwdENhY2hlZEZyYW1lRGF0
YSgpIHsgfQorCisgICAgdm9pZCByZXN0b3JlKEZyYW1lKikgeyB9CisgICAgdm9pZCBjbGVhcigp
IHsgfQorICAgIERPTVdpbmRvdyogZG9tV2luZG93KCkgY29uc3QgeyByZXR1cm4gMDsgfQorfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gU2NyaXB0Q2FjaGVkUGFnZURh
dGFfaAorI2VsaWYgUExBVEZPUk0oQU5EUk9JRCkKKy8vIEZJWE1FOiB0aGUgcmlnaHQgZ3VhcmQg
c2hvdWxkIGJlIEVOQUJMRShQQUdFX0NBQ0hFKS4gUmVwbGFjZSB3aXRoIHRoZSByaWdodCBndWFy
ZCwgb25jZQorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MDYx
IGlzIGZpeGVkLgorLy8KKy8vIE9uIEFuZHJvaWQgd2UgZG8gdXNlIFdlYktpdCdzIHBhZ2UgY2Fj
aGUuIEZvciBub3cgd2UgZG9uJ3Qgc3VwcG9ydCBpc29sYXRlZCB3b3JsZHMKKy8vIHNvIG91ciBp
bXBsZW1lbnRhdGlvbiBkb2VzIG5vdCB0YWtlIHRoZW0gaW50byBhY2NvdW50LgorCisjaW5jbHVk
ZSA8djguaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgRnJhbWU7CitjbGFzcyBET01XaW5kb3c7CisKK2NsYXNzIFNjcmlwdENhY2hl
ZEZyYW1lRGF0YSAgOiBwdWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIFNjcmlwdENh
Y2hlZEZyYW1lRGF0YShGcmFtZSopOworICAgIH5TY3JpcHRDYWNoZWRGcmFtZURhdGEoKTsKKwor
ICAgIHZvaWQgcmVzdG9yZShGcmFtZSopOworICAgIHZvaWQgY2xlYXIoKTsKKyAgICBET01XaW5k
b3cqIGRvbVdpbmRvdygpIGNvbnN0OworCitwcml2YXRlOgorICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+IG1fZ2xvYmFsOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiBtX2Nv
bnRleHQ7CisgICAgRE9NV2luZG93KiBtX2RvbVdpbmRvdzsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2Vsc2UKKyNlcnJvciBZb3UgbmVlZCB0byBjb25zaWRlciB3aGV0aGVyIHlv
dSB3YW50IFBhZ2UgQ2FjaGUgYW5kIGVpdGhlciBhZGQgYSBzdHViIG9yIGEgcmVhbCBpbXBsZW1l
bnRhdGlvbi4KKyNlbmRpZiAvLyBQTEFURk9STShDSFJPTUlVTSkKKworI2VuZGlmIC8vIFNjcmlw
dENhY2hlZEZyYW1lRGF0YV9oCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93
U2hlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dT
aGVsbC5jcHAJKHJldmlzaW9uIDU0MTI3KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdp
bmRvd1NoZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU2LDYgKzM1NiwxMSBAQCB2ODo6UGVy
c2lzdGVudDx2ODo6Q29udGV4dD4gVjhET01XaW5kb3dTCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAordm9pZCBWOERPTVdpbmRvd1NoZWxsOjpzZXRDb250ZXh0KHY4OjpIYW5kbGU8djg6OkNvbnRl
eHQ+IGNvbnRleHQpCit7CisgICAgbV9jb250ZXh0ID0gdjg6OlBlcnNpc3RlbnQ8djg6OkNvbnRl
eHQ+OjpOZXcoY29udGV4dCk7Cit9CisKIGJvb2wgVjhET01XaW5kb3dTaGVsbDo6aW5zdGFsbERP
TVdpbmRvdyh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0LCBET01XaW5kb3cqIHdpbmRv
dykKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IGltcGxpY2l0UHJvdG9TdHJpbmcgPSB2
ODo6U3RyaW5nOjpOZXcoIl9fcHJvdG9fXyIpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9W
OERPTVdpbmRvd1NoZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TVdpbmRvd1NoZWxsLmgJKHJldmlzaW9uIDU0MTI3KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9W
OERPTVdpbmRvd1NoZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNDb250ZXh0SW5pdGlhbGl6ZWQoKTsKIAogICAgIHY4OjpQZXJzaXN0ZW50
PHY4OjpDb250ZXh0PiBjcmVhdGVOZXdDb250ZXh0KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2xv
YmFsLCBpbnQgZXh0ZW5zaW9uR3JvdXApOworICAgIHZvaWQgc2V0Q29udGV4dCh2ODo6SGFuZGxl
PHY4OjpDb250ZXh0Pik7CiAgICAgc3RhdGljIGJvb2wgaW5zdGFsbERPTVdpbmRvdyh2ODo6SGFu
ZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0LCBET01XaW5kb3cqKTsKIAogICAgIHZvaWQgaW5pdENv
bnRleHRJZk5lZWRlZCgpOwo=
</data>
<flag name="review"
          id="35091"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51769</attachid>
            <date>2010-03-26 11:57:40 -0700</date>
            <delta_ts>2010-03-26 12:42:11 -0700</delta_ts>
            <desc>Implement ScriptCachedFrameData on Android (take 3)</desc>
            <filename>36665.patch.v2</filename>
            <type>text/plain</type>
            <size>8060</size>
            <attacher name="Andrei Popescu">andreip</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjYzMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTAtMDMtMjYgIEFuZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBhZ2UgQ2FjaGUgZG9lcyBub3Qgd29yayBvbiBBbmRyb2lkIHdpdGggVjgKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NjY1CisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCBleGlzdGluZyB0ZXN0cyBzaG91bGQgc3VmZmljZSwgdGhpcyBpcyBwbGF0Zm9y
bSBjb2RlLgorCisgICAgICAgIFRoaXMgaW1wbGVtZW50YXRpb24gc2ltcGx5IHNhdmVzIHRoZSBj
b250ZXh0IGFuZCB0aGUgZ2xvYmFsIG9iamVjdAorICAgICAgICBqdXN0IGJlZm9yZSB0aGUgZnJh
bWUgaXMgbmF2aWdhdGVkIHRvIGEgbmV3IHVybC4gQXQgcmVzdG9yZSB0aW1lLAorICAgICAgICB0
aGUgZ2xvYmFsIG9iamVjdCBpcyByZWF0dGFjaGVkIHRvIHRoZSBjb250ZXh0IGFuZCB0aGUgY29u
dGV4dAorICAgICAgICBpcyBhdHRhY2hlZCB0byB0aGUgd2luZG93IHNoZWxsIG9mIHRoZSBmcmFt
ZS4KKworICAgICAgICBOb3RlIHRoYXQgaXNvbGF0ZWQgd29ybGRzIGFyZSBub3QgdGFrZW4gaW50
byBhY2NvdW50IGluIGFueSB3YXksCisgICAgICAgIGFzIEFuZHJvaWQgZG9lcyBub3QgdXNlIHRo
ZW0uCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6U2NyaXB0Q2Fj
aGVkRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6
ZG9tV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6flNj
cmlwdENhY2hlZEZyYW1lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWNoZWRGcmFt
ZURhdGE6OnJlc3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FjaGVkRnJhbWVEYXRh
OjpjbGVhcik6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmg6
CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOERPTVdpbmRvd1NoZWxsOjpzZXRDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOERPTVdpbmRvd1NoZWxsLmg6CisKIDIwMTAtMDMtMjYgIEFuZHJleSBLb3N5YWtvdiAg
PGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFu
LgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNw
cAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FjaGVkRnJhbWVE
YXRhLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAy
MDEwLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlNjcmlwdENhY2hlZEZyYW1lRGF0YS5oIgorCisjaW5jbHVkZSAi
RnJhbWUuaCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiVjhET01X
aW5kb3cuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTY3JpcHRDYWNoZWRGcmFtZURhdGE6
OlNjcmlwdENhY2hlZEZyYW1lRGF0YShGcmFtZSogZnJhbWUpCisgICAgOiBtX2RvbVdpbmRvdyhm
cmFtZS0+ZG9tV2luZG93KCkpCit7CisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwor
ICAgIC8vIFRoZSBjb250ZXh0IGNhbiBvbmx5IGJlIHRoZSBjb250ZXh0IG9mIHRoZSBtYWluIHdv
cmxkLgorICAgIEFTU0VSVChWOFByb3h5OjptYWluV29ybGRDb250ZXh0KGZyYW1lKSA9PSBWOFBy
b3h5Ojpjb250ZXh0KGZyYW1lKSk7CisgICAgbV9jb250ZXh0LnNldChWOFByb3h5OjptYWluV29y
bGRDb250ZXh0KGZyYW1lKSk7CisgICAgbV9nbG9iYWwuc2V0KG1fY29udGV4dC5nZXQoKS0+R2xv
YmFsKCkpOworfQorCitET01XaW5kb3cqIFNjcmlwdENhY2hlZEZyYW1lRGF0YTo6ZG9tV2luZG93
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kb21XaW5kb3c7Cit9CisKK3ZvaWQgU2NyaXB0Q2Fj
aGVkRnJhbWVEYXRhOjpyZXN0b3JlKEZyYW1lKiBmcmFtZSkKK3sKKyAgICB2ODo6SGFuZGxlU2Nv
cGUgaGFuZGxlU2NvcGU7CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShtX2Nv
bnRleHQuZ2V0KCkpOworCisgICAgbV9jb250ZXh0LmdldCgpLT5SZWF0dGFjaEdsb2JhbChtX2ds
b2JhbC5nZXQoKSk7CisgICAgVjhQcm94eSogcHJveHkgPSBWOFByb3h5OjpyZXRyaWV2ZShmcmFt
ZSk7CisgICAgaWYgKHByb3h5KQorICAgICAgICBwcm94eS0+d2luZG93U2hlbGwoKS0+c2V0Q29u
dGV4dChtX2NvbnRleHQuZ2V0KCkpOworfQorCit2b2lkIFNjcmlwdENhY2hlZEZyYW1lRGF0YTo6
Y2xlYXIoKQoreworICAgIG1fY29udGV4dC5jbGVhcigpOworICAgIG1fZ2xvYmFsLmNsZWFyKCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaAkocmV2aXNpb24gNTQxMjcpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENhY2hlZEZyYW1lRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0y
OCwyNSArMjgsNjIgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBTY3JpcHRDYWNo
ZWRQYWdlRGF0YV9oCi0jZGVmaW5lIFNjcmlwdENhY2hlZFBhZ2VEYXRhX2gKKyNpZm5kZWYgU2Ny
aXB0Q2FjaGVkRnJhbWVEYXRhX2gKKyNkZWZpbmUgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhX2gKIAor
I2lmIFBMQVRGT1JNKENIUk9NSVVNKQogLy8gV2UgZG9uJ3QgdXNlIFdlYktpdCdzIHBhZ2UgY2Fj
aGluZywgc28gdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBqdXN0IGEgc3R1Yi4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewotICAgIGNsYXNzIEZyYW1lOwotICAgIGNsYXNzIERPTVdpbmRvdzsKK2NsYXNz
IEZyYW1lOworY2xhc3MgRE9NV2luZG93OwogCi0gICAgY2xhc3MgU2NyaXB0Q2FjaGVkRnJhbWVE
YXRhICB7Ci0gICAgcHVibGljOgotICAgICAgICBTY3JpcHRDYWNoZWRGcmFtZURhdGEoRnJhbWUq
KSB7IH0KLSAgICAgICAgflNjcmlwdENhY2hlZEZyYW1lRGF0YSgpIHsgfQotCi0gICAgICAgIHZv
aWQgcmVzdG9yZShGcmFtZSopIHsgfQotICAgICAgICB2b2lkIGNsZWFyKCkgeyB9Ci0gICAgICAg
IERPTVdpbmRvdyogZG9tV2luZG93KCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIH07CitjbGFz
cyBTY3JpcHRDYWNoZWRGcmFtZURhdGEgIHsKK3B1YmxpYzoKKyAgICBTY3JpcHRDYWNoZWRGcmFt
ZURhdGEoRnJhbWUqKSB7IH0KKyAgICB+U2NyaXB0Q2FjaGVkRnJhbWVEYXRhKCkgeyB9CisKKyAg
ICB2b2lkIHJlc3RvcmUoRnJhbWUqKSB7IH0KKyAgICB2b2lkIGNsZWFyKCkgeyB9CisgICAgRE9N
V2luZG93KiBkb21XaW5kb3coKSBjb25zdCB7IHJldHVybiAwOyB9Cit9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBTY3JpcHRDYWNoZWRQYWdlRGF0YV9oCisjZWxpZiBQ
TEFURk9STShBTkRST0lEKQorLy8gRklYTUU6IHRoZSByaWdodCBndWFyZCBzaG91bGQgYmUgRU5B
QkxFKFBBR0VfQ0FDSEUpLiBSZXBsYWNlIHdpdGggdGhlIHJpZ2h0IGd1YXJkLCBvbmNlCisvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUwNjEgaXMgZml4ZWQuCisv
LworLy8gT24gQW5kcm9pZCB3ZSBkbyB1c2UgV2ViS2l0J3MgcGFnZSBjYWNoZS4gRm9yIG5vdyB3
ZSBkb24ndCBzdXBwb3J0IGlzb2xhdGVkIHdvcmxkcworLy8gc28gb3VyIGltcGxlbWVudGF0aW9u
IGRvZXMgbm90IHRha2UgdGhlbSBpbnRvIGFjY291bnQuCisKKyNpbmNsdWRlICJPd25IYW5kbGUu
aCIKKyNpbmNsdWRlIDx2OC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBGcmFtZTsKK2NsYXNzIERPTVdpbmRvdzsKKworY2xhc3Mg
U2NyaXB0Q2FjaGVkRnJhbWVEYXRhICA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6Cisg
ICAgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhKEZyYW1lKik7CisgICAgflNjcmlwdENhY2hlZEZyYW1l
RGF0YSgpIHsgfQorCisgICAgdm9pZCByZXN0b3JlKEZyYW1lKik7CisgICAgdm9pZCBjbGVhcigp
OworICAgIERPTVdpbmRvdyogZG9tV2luZG93KCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgT3du
SGFuZGxlPHY4OjpPYmplY3Q+IG1fZ2xvYmFsOworICAgIE93bkhhbmRsZTx2ODo6Q29udGV4dD4g
bV9jb250ZXh0OworICAgIERPTVdpbmRvdyogbV9kb21XaW5kb3c7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbHNlCisjZXJyb3IgWW91IG5lZWQgdG8gY29uc2lkZXIgd2hldGhl
ciB5b3Ugd2FudCBQYWdlIENhY2hlIGFuZCBlaXRoZXIgYWRkIGEgc3R1YiBvciBhIHJlYWwgaW1w
bGVtZW50YXRpb24uCisjZW5kaWYgLy8gUExBVEZPUk0oQ0hST01JVU0pCisKKyNlbmRpZiAvLyBT
Y3JpcHRDYWNoZWRGcmFtZURhdGFfaApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdp
bmRvd1NoZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2lu
ZG93U2hlbGwuY3BwCShyZXZpc2lvbiA1NDEyNykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XaW5kb3dTaGVsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Niw2ICszNTYsMTYgQEAgdjg6
OlBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+IFY4RE9NV2luZG93UwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKK3ZvaWQgVjhET01XaW5kb3dTaGVsbDo6c2V0Q29udGV4dCh2ODo6SGFuZGxlPHY4OjpD
b250ZXh0PiBjb250ZXh0KQoreworICAgIC8vIGlmIHdlIGFscmVhZHkgaGF2ZSBhIGNvbnRleHQs
IGNsZWFyIGl0IGJlZm9yZSBzZXR0aW5nIHRoZSBuZXcgb25lLgorICAgIGlmICghbV9jb250ZXh0
LklzRW1wdHkoKSkgeworICAgICAgICBtX2NvbnRleHQuRGlzcG9zZSgpOworICAgICAgICBtX2Nv
bnRleHQuQ2xlYXIoKTsKKyAgICB9CisgICAgbV9jb250ZXh0ID0gdjg6OlBlcnNpc3RlbnQ8djg6
OkNvbnRleHQ+OjpOZXcoY29udGV4dCk7Cit9CisKIGJvb2wgVjhET01XaW5kb3dTaGVsbDo6aW5z
dGFsbERPTVdpbmRvdyh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0LCBET01XaW5kb3cq
IHdpbmRvdykKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IGltcGxpY2l0UHJvdG9TdHJp
bmcgPSB2ODo6U3RyaW5nOjpOZXcoIl9fcHJvdG9fXyIpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERPTVdpbmRvd1NoZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTVdpbmRvd1NoZWxsLmgJKHJldmlzaW9uIDU0MTI3KQorKysgV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERPTVdpbmRvd1NoZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDcgQEAg
cHVibGljOgogICAgIGJvb2wgaXNDb250ZXh0SW5pdGlhbGl6ZWQoKTsKIAogICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpDb250ZXh0PiBjcmVhdGVOZXdDb250ZXh0KHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gZ2xvYmFsLCBpbnQgZXh0ZW5zaW9uR3JvdXApOworICAgIHZvaWQgc2V0Q29udGV4dCh2ODo6
SGFuZGxlPHY4OjpDb250ZXh0Pik7CiAgICAgc3RhdGljIGJvb2wgaW5zdGFsbERPTVdpbmRvdyh2
ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0LCBET01XaW5kb3cqKTsKIAogICAgIHZvaWQg
aW5pdENvbnRleHRJZk5lZWRlZCgpOwo=
</data>
<flag name="review"
          id="35109"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="35113"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>