<?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>114994</bug_id>
          
          <creation_ts>2013-04-22 15:13:28 -0700</creation_ts>
          <short_desc>Plugin Snapshotting: Don&apos;t consume insane amounts of time detecting the primary plugin</short_desc>
          <delta_ts>2013-04-22 15:35:53 -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>Plug-ins</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>dino</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>879460</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-04-22 15:13:28 -0700</bug_when>
    <thetext>Some pages either have tons of subframes or dynamically add lots of plugins.

We&apos;re currently wasting a lot of time on every subframe load and every addPluginView doing primary plugin detection. Some things we can do to improve this:

* only start detecting after the main frame&apos;s didFinishLoad comes. This was intended to be in the original implementation, but we only wait for the first subframe&apos;s didFinishLoad instead :|

* only explicitly detect on the main frame&apos;s didFinishLoad (not subframes)

* coalesce calls to determinePrimarySnapshottedPlugInTimerFired from both addPluginView (in case JS is adding lots of plugins in a loop) and didFinishLoad

I&apos;m not sure this is a 100% solution, but it should not regress primary plugin detection while improving performance greatly on some pages (http://thelede.blogs.nytimes.com/2013/04/19/updates-on-aftermath-of-boston-marathon-explosions-2/).

&lt;rdar://problem/13696269&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879466</commentid>
    <comment_count>1</comment_count>
      <attachid>199117</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-04-22 15:18:11 -0700</bug_when>
    <thetext>Created attachment 199117
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879467</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-04-22 15:18:21 -0700</bug_when>
    <thetext>Going to test more before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879473</commentid>
    <comment_count>3</comment_count>
      <attachid>199117</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-04-22 15:31:49 -0700</bug_when>
    <thetext>Comment on attachment 199117
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=199117&amp;action=review

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:3949
&gt; +void WebPage::determinePrimarySnapshottedPlugInTimerFired()
&gt; +{
&gt; +#if ENABLE(PRIMARY_SNAPSHOTTED_PLUGIN_HEURISTIC)
&gt; +    if (!m_page-&gt;settings()-&gt;snapshotAllPlugIns() &amp;&amp; m_page-&gt;settings()-&gt;primaryPlugInSnapshotDetectionEnabled())
&gt; +        determinePrimarySnapshottedPlugIn();
&gt; +#endif
&gt; +}

You probably want to put the entire function body inside the #if.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879476</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-04-22 15:35:53 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/148919</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199117</attachid>
            <date>2013-04-22 15:18:11 -0700</date>
            <delta_ts>2013-04-22 15:31:48 -0700</delta_ts>
            <desc>patch</desc>
            <filename>faster-ps.diff</filename>
            <type>text/plain</type>
            <size>4875</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3YTFkYjBkLi5iZjFjYTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzQg
QEAKIDIwMTMtMDQtMjIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
KyAgICAgICAgUGx1Z2luIFNuYXBzaG90dGluZzogRG9uJ3QgY29uc3VtZSBpbnNhbmUgYW1vdW50
cyBvZiB0aW1lIGRldGVjdGluZyB0aGUgcHJpbWFyeSBwbHVnaW4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDk5NAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTM2OTYyNjk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgT24gc29tZSBwYWdlcywgd2UgY3VycmVudGx5IHdhc3RlIGEgbG90IG9mIHRpbWUg
b24gZXZlcnkgc3ViZnJhbWUgbG9hZAorICAgICAgICBhbmQgZXZlcnkgYWRkUGx1Z2luVmlldyBk
b2luZyBwcmltYXJ5IHBsdWdpbiBkZXRlY3Rpb24uIFRoaXMgcGF0Y2gKKyAgICAgICAgYXR0ZW1w
dHMgdG8gYWRkcmVzcyB0aGlzIHZpYSBhIGZldyBtaW5vciBjaGFuZ2VzOgorCisgICAgICAgIC0g
T25seSBhbGxvdyBkZXRlY3Rpb24gYWZ0ZXIgdGhlIG1haW4gZnJhbWUncyBkaWRGaW5pc2hMb2Fk
IGNvbWVzLCBpbnN0ZWFkIG9mIHRoZSBmaXJzdCBzdWJmcmFtZS4KKworICAgICAgICAtIE9ubHkg
ZXhwbGljaXRseSBkZXRlY3Qgb24gdGhlIG1haW4gZnJhbWUncyBkaWRGaW5pc2hMb2FkIChub3Qg
c3ViZnJhbWVzKS4KKworICAgICAgICAtIENvYWxlc2NlIGNhbGxzIHRvIGRldGVybWluZVByaW1h
cnlTbmFwc2hvdHRlZFBsdWdJbiBmcm9tIGJvdGggYWRkUGx1Z2luVmlldworICAgICAgICAoaW4g
Y2FzZSBKUyBpcyBhZGRpbmcgbG90cyBvZiBwbHVnaW5zIGluIGEgbG9vcCkgYW5kIGRpZEZpbmlz
aExvYWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFkZFBsdWdpblZpZXcpOiBDb2FsZXNjZSBjYWxscyB0byBk
ZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW4uCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmRpZEZpbmlzaExvYWQpOgorICAgICAgICBDb2FsZXNjZSBjYWxscyB0byBkZXRlcm1pbmVQ
cmltYXJ5U25hcHNob3R0ZWRQbHVnSW4uCisgICAgICAgIEJhaWwgb24gc3ViZnJhbWUgbG9hZHMs
IHdlJ3JlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgbWFpbiBmcmFtZSBiZWluZyBjb21wbGV0ZS4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGV0ZXJtaW5lUHJpbWFyeVNuYXBzaG90dGVkUGx1
Z0luVGltZXJGaXJlZCk6CisgICAgICAgIENhbGwgZGV0ZXJtaW5lUHJpbWFyeVNuYXBzaG90dGVk
UGx1Z0luLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAg
IEFkZCBtX2RldGVybWluZVByaW1hcnlTbmFwc2hvdHRlZFBsdWdJblRpbWVyIGFuZCBkZXRlcm1p
bmVQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5UaW1lckZpcmVkCisKKzIwMTMtMDQtMjIgIFRpbSBI
b3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKICAgICAgICAgUERGUGx1Z2luOiBT
dXBwb3J0IHVubG9ja2luZyBlbmNyeXB0ZWQgUERGcwogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0OTM4CiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8x
Mjg3Mjg4OD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCA4MTY2NzA1Li5hMmMwOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yNDIsNiArMjQyLDcgQEAgV2ViUGFnZTo6V2ViUGFn
ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCiAjaWYgRU5BQkxFKFBSSU1BUllfU05BUFNIT1RURURfUExVR0lOX0hFVVJJU1RJQykK
ICAgICAsIG1fcmVhZHlUb0ZpbmRQcmltYXJ5U25hcHNob3R0ZWRQbHVnaW4oZmFsc2UpCiAgICAg
LCBtX2RpZEZpbmRQcmltYXJ5U25hcHNob3R0ZWRQbHVnaW4oZmFsc2UpCisgICAgLCBtX2RldGVy
bWluZVByaW1hcnlTbmFwc2hvdHRlZFBsdWdJblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywg
JldlYlBhZ2U6OmRldGVybWluZVByaW1hcnlTbmFwc2hvdHRlZFBsdWdJblRpbWVyRmlyZWQpCiAj
ZW5kaWYKICNpZiBQTEFURk9STShNQUMpCiAgICAgLCBtX3BkZlBsdWdpbkVuYWJsZWQoZmFsc2Up
CkBAIC0yOTQzLDggKzI5NDQsNyBAQCB2b2lkIFdlYlBhZ2U6OmFkZFBsdWdpblZpZXcoUGx1Z2lu
VmlldyogcGx1Z2luVmlldykKIAogICAgIG1fcGx1Z2luVmlld3MuYWRkKHBsdWdpblZpZXcpOwog
I2lmIEVOQUJMRShQUklNQVJZX1NOQVBTSE9UVEVEX1BMVUdJTl9IRVVSSVNUSUMpCi0gICAgaWYg
KCFtX3BhZ2UtPnNldHRpbmdzKCktPnNuYXBzaG90QWxsUGx1Z0lucygpICYmIG1fcGFnZS0+c2V0
dGluZ3MoKS0+cHJpbWFyeVBsdWdJblNuYXBzaG90RGV0ZWN0aW9uRW5hYmxlZCgpKQotICAgICAg
ICBkZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW4oKTsKKyAgICBtX2RldGVybWluZVBy
aW1hcnlTbmFwc2hvdHRlZFBsdWdJblRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKICNlbmRpZgogfQog
CkBAIC0zOTIzLDkgKzM5MjMsMTEgQEAgdm9pZCBXZWJQYWdlOjpkaWRDb21taXRMb2FkKFdlYkZy
YW1lKiBmcmFtZSkKIHZvaWQgV2ViUGFnZTo6ZGlkRmluaXNoTG9hZChXZWJGcmFtZSogZnJhbWUp
CiB7CiAjaWYgRU5BQkxFKFBSSU1BUllfU05BUFNIT1RURURfUExVR0lOX0hFVVJJU1RJQykKKyAg
ICBpZiAoIWZyYW1lLT5pc01haW5GcmFtZSgpKQorICAgICAgICByZXR1cm47CisKICAgICBtX3Jl
YWR5VG9GaW5kUHJpbWFyeVNuYXBzaG90dGVkUGx1Z2luID0gdHJ1ZTsKLSAgICBpZiAoIW1fcGFn
ZS0+c2V0dGluZ3MoKS0+c25hcHNob3RBbGxQbHVnSW5zKCkgJiYgbV9wYWdlLT5zZXR0aW5ncygp
LT5wcmltYXJ5UGx1Z0luU25hcHNob3REZXRlY3Rpb25FbmFibGVkKCkpCi0gICAgICAgIGRldGVy
bWluZVByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbigpOworICAgIG1fZGV0ZXJtaW5lUHJpbWFyeVNu
YXBzaG90dGVkUGx1Z0luVGltZXIuc3RhcnRPbmVTaG90KDApOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0oZnJhbWUpOwogI2VuZGlmCkBAIC0zOTM4LDYgKzM5NDAsMTQgQEAgc3RhdGljIGZsb2F0
IHByaW1hcnlTbmFwc2hvdHRlZFBsdWdJblNlYXJjaEJ1Y2tldFNpemUgPSAxLjE7CiBzdGF0aWMg
aW50IHByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbk1pbmltdW1XaWR0aCA9IDQ1MDsKIHN0YXRpYyBp
bnQgcHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luTWluaW11bUhlaWdodCA9IDMwMDsKIAordm9pZCBX
ZWJQYWdlOjpkZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5UaW1lckZpcmVkKCkKK3sK
KyNpZiBFTkFCTEUoUFJJTUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElDKQorICAgIGlm
ICghbV9wYWdlLT5zZXR0aW5ncygpLT5zbmFwc2hvdEFsbFBsdWdJbnMoKSAmJiBtX3BhZ2UtPnNl
dHRpbmdzKCktPnByaW1hcnlQbHVnSW5TbmFwc2hvdERldGVjdGlvbkVuYWJsZWQoKSkKKyAgICAg
ICAgZGV0ZXJtaW5lUHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luKCk7CisjZW5kaWYKK30KKwogdm9p
ZCBXZWJQYWdlOjpkZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW4oKQogewogICAgIGlm
ICghbV9wYWdlLT5zZXR0aW5ncygpLT5wbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAxOGRmZmM3Li5l
ZTk4ZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
QEAgLTY0OCw2ICs2NDgsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoUFJJTUFSWV9TTkFQU0hP
VFRFRF9QTFVHSU5fSEVVUklTVElDKQogICAgIHZvaWQgZGV0ZXJtaW5lUHJpbWFyeVNuYXBzaG90
dGVkUGx1Z0luKCk7CisgICAgdm9pZCBkZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5U
aW1lckZpcmVkKCk7CiAgICAgdm9pZCByZXNldFByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbigpOwog
ICAgIGJvb2wgbWF0Y2hlc1ByaW1hcnlQbHVnSW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBj
b25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3Q7
CiAjZW5kaWYKQEAgLTg3NCw2ICs4NzUsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3ByaW1h
cnlQbHVnSW5QYWdlT3JpZ2luOwogICAgIFN0cmluZyBtX3ByaW1hcnlQbHVnSW5PcmlnaW47CiAg
ICAgU3RyaW5nIG1fcHJpbWFyeVBsdWdJbk1pbWVUeXBlOworICAgIFdlYkNvcmU6OlJ1bkxvb3A6
OlRpbWVyPFdlYlBhZ2U+IG1fZGV0ZXJtaW5lUHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luVGltZXI7
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykK
</data>
<flag name="review"
          id="220784"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>