<?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>57527</bug_id>
          
          <creation_ts>2011-03-30 23:56:21 -0700</creation_ts>
          <short_desc>WebKit2: No &quot;open in preview&quot; contextual menu item for PDFs</short_desc>
          <delta_ts>2011-04-04 12:19:50 -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>PDF</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://ne.edgecastcdn.net/800E0A/www.smartusa.com/Downloads/smart-fortwo-electric-drive.pdf</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>376970</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-03-30 23:56:21 -0700</bug_when>
    <thetext>PDFs cannot be opened in Preview through the context menu in WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376971</commentid>
    <comment_count>1</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-03-30 23:56:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/9210368&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376973</commentid>
    <comment_count>2</comment_count>
      <attachid>87674</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-03-31 00:03:49 -0700</bug_when>
    <thetext>Created attachment 87674
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376977</commentid>
    <comment_count>3</comment_count>
      <attachid>87674</attachid>
    <who name="">mitz</who>
    <bug_when>2011-03-31 00:29:54 -0700</bug_when>
    <thetext>Comment on attachment 87674
Patch

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

Too many comments to r+. I suspect that this is leaking menu items.

&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:66
&gt; +    CFRelease (appURL);

Extra space after CFRelease. Given that you’re using this variable twice as a CFURLRef an only once as an NSURL *, I would define it as a CFURLRef and cast once.

&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:69
&gt; +    [*image setSize:NSMakeSize(16.f,16.f)];

Should be NSMakeSize(16, 16) without .f and with a space after the comma.

&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:71
&gt; +    NSString *appName = [[NSFileManager defaultManager] displayNameAtPath:appPath];

Not sure why this local is needed.

&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:224
&gt; +    NSMenu* menu = [[NSMenu alloc] initWithTitle:@&quot;&quot;];

Space on the wrong side of the *.

&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:226
&gt; +    NSEnumerator *e = [[[_pdfView menuForEvent:theEvent] itemArray] objectEnumerator];

Please use a more descriptive name.

&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:228
&gt; +    while ((item = [e nextObject]) != nil) {

WebKit style is to omit “!= nil”

&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:230
&gt; +        NSMenuItem *itemCopy = [item copy];
&gt; +        [menu addItem:itemCopy];

Wow, we don’t need to release the item?

&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:242
&gt; +        if (!appName)
&gt; +            // FIXME: Localize this.
&gt; +            appName = @&quot;Finder&quot;;

Need braces around these two lines.

&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:252
&gt; +        [menu addItem:item];

Don’t need to release item?

&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:265
&gt; +    return YES;

Strange that we copy the PDFView’s own items then decide for it that they’re always valid. But that’s what we do in WebKit1!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376987</commentid>
    <comment_count>4</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-03-31 01:13:19 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 87674 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=87674&amp;action=review
&gt; 
&gt; Too many comments to r+. I suspect that this is leaking menu items.

You&apos;re right, I didn&apos;t check this nearly well enough when copying it from WebKit1.

&gt;&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:66
&gt;&gt; +    CFRelease (appURL);
&gt; 
&gt; Extra space after CFRelease. Given that you’re using this variable twice as a CFURLRef an only once as an NSURL *, I would define it as a CFURLRef and cast once.

Absolutely.  All changed.

&gt;&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:69
&gt;&gt; +    [*image setSize:NSMakeSize(16.f,16.f)];
&gt; 
&gt; Should be NSMakeSize(16, 16) without .f and with a space after the comma.

Changed.

&gt;&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:71
&gt;&gt; +    NSString *appName = [[NSFileManager defaultManager] displayNameAtPath:appPath];
&gt; 
&gt; Not sure why this local is needed.

Neither am I.   Collapsed.

&gt;&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:224
&gt;&gt; +    NSMenu* menu = [[NSMenu alloc] initWithTitle:@&quot;&quot;];
&gt; 
&gt; Space on the wrong side of the *.

Indeed.  Swapped.

&gt;&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:226
&gt;&gt; +    NSEnumerator *e = [[[_pdfView menuForEvent:theEvent] itemArray] objectEnumerator];
&gt; 
&gt; Please use a more descriptive name.

Sure thing.  &quot;menuItemEnumerator&quot;.

&gt;&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:228
&gt;&gt; +    while ((item = [e nextObject]) != nil) {
&gt; 
&gt; WebKit style is to omit “!= nil”

I think, in addition, the declaration can probably be pulled into the while conditional as well.

&gt;&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:230
&gt;&gt; +        [menu addItem:itemCopy];
&gt; 
&gt; Wow, we don’t need to release the item?

Totally untrue.  We really do need to release the item.  Good catch.

&gt;&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:242
&gt;&gt; +            appName = @&quot;Finder&quot;;
&gt; 
&gt; Need braces around these two lines.

This was definitely my fault.  Braced.

&gt;&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:252
&gt;&gt; +        [menu addItem:item];
&gt; 
&gt; Don’t need to release item?

I think we do.  It was only above that we were doing the wrong thing.

&gt;&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:265
&gt;&gt; +    return YES;
&gt; 
&gt; Strange that we copy the PDFView’s own items then decide for it that they’re always valid. But that’s what we do in WebKit1!

I think that the way this will work is: we don&apos;t change any of the copied menu items&apos; targets, which are presumably the PDFView.  So it will still get called on to validate those menu items.

Posting a new patch shortly...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376989</commentid>
    <comment_count>5</comment_count>
      <attachid>87678</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-03-31 01:20:47 -0700</bug_when>
    <thetext>Created attachment 87678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378596</commentid>
    <comment_count>6</comment_count>
      <attachid>87678</attachid>
    <who name="">mitz</who>
    <bug_when>2011-04-03 16:21:15 -0700</bug_when>
    <thetext>Comment on attachment 87678
Patch

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

&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:62
&gt; +    CFURLRef appURL = nil;

Now that it’s a CF type, it should be = 0, not = nil.

&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:68
&gt; +    NSString *appPath = [(NSURL*)appURL path];

Need space after NSURL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378886</commentid>
    <comment_count>7</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-04 10:57:00 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 87678 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=87678&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:62
&gt; &gt; +    CFURLRef appURL = nil;
&gt; 
&gt; Now that it’s a CF type, it should be = 0, not = nil.

Actually, since CFURLRef is a C-style opaque pointer, shouldn&apos;t it be NULL?  

&gt; &gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:68
&gt; &gt; +    NSString *appPath = [(NSURL*)appURL path];
&gt; 
&gt; Need space after NSURL

Added.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378889</commentid>
    <comment_count>8</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-04 11:03:10 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 87678 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=87678&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:62
&gt; &gt; &gt; +    CFURLRef appURL = nil;
&gt; &gt; 
&gt; &gt; Now that it’s a CF type, it should be = 0, not = nil.
&gt; 
&gt; Actually, since CFURLRef is a C-style opaque pointer, shouldn&apos;t it be NULL?  

Looks like I&apos;m confusing the language of the file with the language of the pointer.  Changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378952</commentid>
    <comment_count>9</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-04 12:19:50 -0700</bug_when>
    <thetext>Committed r82852: &lt;http://trac.webkit.org/changeset/82852&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87674</attachid>
            <date>2011-03-31 00:03:49 -0700</date>
            <delta_ts>2011-03-31 01:20:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57527-20110331000349.patch</filename>
            <type>text/plain</type>
            <size>4858</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI0NzUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzOTQwN2RjOTI5YjhlZDIz
YTY1ODMxODkxZjUwMDUxZTNhYWJmZDMzLi5lZTk5ZTA4ODMzMzIyNDc2NGM0ZWUzZGIwZTJjYmFk
Mjk4MjVjNjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjIgQEAKIDIwMTEtMDMtMzAgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViS2l0MjogTm8gIm9wZW4gaW4gcHJldmlldyIgY29udGV4
dHVhbCBtZW51IGl0ZW0gZm9yIFBERnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU3NTI3CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIG9wZW5pbmcg
YSBQREYgaW4gdGhlIGFzc29jaWF0ZWQgYXBwbGljYXRpb24gZnJvbSB0aGUKKyAgICAgICAgY29u
dGV4dCBtZW51LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUERGVmlld0NvbnRyb2xs
ZXIubW06CisgICAgICAgIChfYXBwbGljYXRpb25JbmZvRm9yTUlNRVR5cGUpOiBBZGRlZCwgY29w
aWVkIGZyb20gV2ViS2l0L1dlYlBERlZpZXcubW0KKyAgICAgICAgKC1bV0tQREZWaWV3IF9vcGVu
V2l0aEZpbmRlcjpdKTogQWRkZWQuCisgICAgICAgICgtW1dLUERGVmlldyBoaXRUZXN0Ol0pOiBB
ZGRlZCwgY29waWVkIGZyb20gV2ViS2l0L1dlYlBERlZpZXcubW0uCisgICAgICAgICgtW1dLUERG
VmlldyBtZW51Rm9yRXZlbnQ6XSk6IEFkZGVkLCBhZGFwdGVkIGZyb20gV2ViS2l0L1dlYlBERlZp
ZS5tbS4KKyAgICAgICAgKC1bV0tQREZWaWV3IHZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW06XSk6
IEFkZGVkLgorCisyMDExLTAzLTMwICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCiAKICAgICAgICAgV2ViS2l0Mjog
V2ViUHJvY2VzcyBpcyB1c2luZyA4OSUsIHdoaWxlIHZpZXdpbmcgYSBQREYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BERlZpZXdDb250cm9sbGVyLm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUERGVmlld0NvbnRyb2xsZXIubW0KaW5k
ZXggNWM2NDAwMDE1YTgxNTMzZjI0YzI0M2QxM2U4MmQzNGIyOWE3M2Q5Mi4uNDk2MGJhN2ViZTIx
MzE0MTcyM2VhYzliNTU3NTFmYzFlNmQ5MmFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvUERGVmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvUERGVmlld0NvbnRyb2xsZXIubW0KQEAgLTUxLDcgKzUxLDI3
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiBAZW5kCiAKIGV4dGVybiAiQyIgTlNTdHJpbmcg
Kl9OU1BhdGhGb3JTeXN0ZW1GcmFtZXdvcmsoTlNTdHJpbmcgKmZyYW1ld29yayk7Ci0gICAgCisK
Ky8vIE1BUks6IEMgVVRJTElUWSBGVU5DVElPTlMKKworc3RhdGljIHZvaWQgX2FwcGxpY2F0aW9u
SW5mb0Zvck1JTUVUeXBlKE5TU3RyaW5nICp0eXBlLCBOU1N0cmluZyAqKm5hbWUsIE5TSW1hZ2Ug
KippbWFnZSkKK3sKKyAgICBOU1VSTCAqYXBwVVJMID0gbmlsOworCisgICAgT1NTdGF0dXMgZXJy
b3IgPSBMU0NvcHlBcHBsaWNhdGlvbkZvck1JTUVUeXBlKChDRlN0cmluZ1JlZil0eXBlLCBrTFNS
b2xlc0FsbCwgKENGVVJMUmVmICopJmFwcFVSTCk7CisgICAgaWYgKGVycm9yICE9IG5vRXJyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBOU1N0cmluZyAqYXBwUGF0aCA9IFthcHBVUkwgcGF0aF07
CisgICAgQ0ZSZWxlYXNlIChhcHBVUkwpOworCisgICAgKmltYWdlID0gW1tOU1dvcmtzcGFjZSBz
aGFyZWRXb3Jrc3BhY2VdIGljb25Gb3JGaWxlOmFwcFBhdGhdOworICAgIFsqaW1hZ2Ugc2V0U2l6
ZTpOU01ha2VTaXplKDE2LmYsMTYuZildOworCisgICAgTlNTdHJpbmcgKmFwcE5hbWUgPSBbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGRpc3BsYXlOYW1lQXRQYXRoOmFwcFBhdGhdOwor
ICAgICpuYW1lID0gYXBwTmFtZTsKK30KKwogQGludGVyZmFjZSBXS1BERlZpZXcgOiBOU1ZpZXcK
IHsKICAgICBQREZWaWV3Q29udHJvbGxlciogX3BkZlZpZXdDb250cm9sbGVyOwpAQCAtMTU5LDYg
KzE3OSwxMyBAQCBleHRlcm4gIkMiIE5TU3RyaW5nICpfTlNQYXRoRm9yU3lzdGVtRnJhbWV3b3Jr
KE5TU3RyaW5nICpmcmFtZXdvcmspOwogICAgICAgICBbc2VsZiBfdXBkYXRlUHJlZmVyZW5jZXNT
b29uXTsKIH0KIAorLSAodm9pZClfb3BlbldpdGhGaW5kZXI6KGlkKXNlbmRlcgoreworICAgIF9w
ZGZWaWV3Q29udHJvbGxlci0+b3BlblBERkluRmluZGVyKCk7Cit9CisKKy8vIE1BUks6IE5TVmll
dyBvdmVycmlkZXMKKwogLSAodm9pZCl2aWV3RGlkTW92ZVRvV2luZG93CiB7CiAgICAgaWYgKCFb
c2VsZiB3aW5kb3ddKQpAQCAtMTgxLDcgKzIwOCw2NCBAQCBleHRlcm4gIkMiIE5TU3RyaW5nICpf
TlNQYXRoRm9yU3lzdGVtRnJhbWV3b3JrKE5TU3RyaW5nICpmcmFtZXdvcmspOwogICAgIFtub3Rp
ZmljYXRpb25DZW50ZXIgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBuYW1lOl93ZWJraXRfUERGVmlld1Bh
Z2VDaGFuZ2VkTm90aWZpY2F0aW9uIG9iamVjdDpfcGRmVmlld107CiB9CiAKLS8vIFBERlZpZXcg
ZGVsZWdhdGUgbWV0aG9kcworLSAoTlNWaWV3ICopaGl0VGVzdDooTlNQb2ludClwb2ludAorewor
ICAgIC8vIE92ZXJyaWRlIGhpdFRlc3Qgc28gd2UgY2FuIG92ZXJyaWRlIG1lbnVGb3JFdmVudC4K
KyAgICBOU0V2ZW50ICpldmVudCA9IFtOU0FwcCBjdXJyZW50RXZlbnRdOworICAgIE5TRXZlbnRU
eXBlIHR5cGUgPSBbZXZlbnQgdHlwZV07CisgICAgaWYgKHR5cGUgPT0gTlNSaWdodE1vdXNlRG93
biB8fCAodHlwZSA9PSBOU0xlZnRNb3VzZURvd24gJiYgKFtldmVudCBtb2RpZmllckZsYWdzXSAm
IE5TQ29udHJvbEtleU1hc2spKSkKKyAgICAgICAgcmV0dXJuIHNlbGY7CisKKyAgICByZXR1cm4g
W3N1cGVyIGhpdFRlc3Q6cG9pbnRdOworfQorCistIChOU01lbnUgKiltZW51Rm9yRXZlbnQ6KE5T
RXZlbnQgKil0aGVFdmVudAoreworICAgIE5TTWVudSogbWVudSA9IFtbTlNNZW51IGFsbG9jXSBp
bml0V2l0aFRpdGxlOkAiIl07CisKKyAgICBOU0VudW1lcmF0b3IgKmUgPSBbW1tfcGRmVmlldyBt
ZW51Rm9yRXZlbnQ6dGhlRXZlbnRdIGl0ZW1BcnJheV0gb2JqZWN0RW51bWVyYXRvcl07CisgICAg
TlNNZW51SXRlbSAqaXRlbTsKKyAgICB3aGlsZSAoKGl0ZW0gPSBbZSBuZXh0T2JqZWN0XSkgIT0g
bmlsKSB7CisgICAgICAgIE5TTWVudUl0ZW0gKml0ZW1Db3B5ID0gW2l0ZW0gY29weV07CisgICAg
ICAgIFttZW51IGFkZEl0ZW06aXRlbUNvcHldOworCisgICAgICAgIGlmIChbaXRlbSBhY3Rpb25d
ICE9IEBzZWxlY3Rvcihjb3B5OikpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAv
LyBBZGQgaW4gYW4gIk9wZW4gd2l0aCA8ZGVmYXVsdCBQREYgdmlld2VyPiIgaXRlbQorICAgICAg
ICBOU1N0cmluZyAqYXBwTmFtZSA9IG5pbDsKKyAgICAgICAgTlNJbWFnZSAqYXBwSWNvbiA9IG5p
bDsKKworICAgICAgICBfYXBwbGljYXRpb25JbmZvRm9yTUlNRVR5cGUoQCJhcHBsaWNhdGlvbi9w
ZGYiLCAmYXBwTmFtZSwgJmFwcEljb24pOworICAgICAgICBpZiAoIWFwcE5hbWUpCisgICAgICAg
ICAgICAvLyBGSVhNRTogTG9jYWxpemUgdGhpcy4KKyAgICAgICAgICAgIGFwcE5hbWUgPSBAIkZp
bmRlciI7CisKKyAgICAgICAgLy8gVG8gbWF0Y2ggdGhlIFBERktpdCBzdHlsZSwgd2UnbGwgYWRk
IE9wZW4gd2l0aCBQcmV2aWV3IGV2ZW4gd2hlbiB0aGVyZSdzIG5vIGRvY3VtZW50IHlldCB0byB2
aWV3LCBhbmQKKyAgICAgICAgLy8gZGlzYWJsZSBpdCB1c2luZyB2YWxpZGF0ZVVzZXJJbnRlcmZh
Y2VJdGVtLgorICAgICAgICAvLyBGSVhNRTogTG9jYWxpemUgdGhpcy4KKyAgICAgICAgTlNTdHJp
bmcgKnRpdGxlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJPcGVuIHdpdGggJUAiLCBh
cHBOYW1lXTsKKyAgICAgICAgaXRlbSA9IFtbTlNNZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRs
ZTp0aXRsZSBhY3Rpb246QHNlbGVjdG9yKF9vcGVuV2l0aEZpbmRlcjopIGtleUVxdWl2YWxlbnQ6
QCIiXTsKKyAgICAgICAgaWYgKGFwcEljb24pCisgICAgICAgICAgICBbaXRlbSBzZXRJbWFnZTph
cHBJY29uXTsKKyAgICAgICAgW21lbnUgYWRkSXRlbTpbTlNNZW51SXRlbSBzZXBhcmF0b3JJdGVt
XV07CisgICAgICAgIFttZW51IGFkZEl0ZW06aXRlbV07CisgICAgfQorCisgICAgcmV0dXJuIFtt
ZW51IGF1dG9yZWxlYXNlXTsKK30KKworLy8gTUFSSzogTlNVc2VySW50ZXJmYWNlVmFsaWRhdGlv
bnMgUFJPVE9DT0wgSU1QTEVNRU5UQVRJT04KKworLSAoQk9PTCl2YWxpZGF0ZVVzZXJJbnRlcmZh
Y2VJdGVtOihpZCA8TlNWYWxpZGF0ZWRVc2VySW50ZXJmYWNlSXRlbT4paXRlbQoreworICAgIFNF
TCBhY3Rpb24gPSBbaXRlbSBhY3Rpb25dOworICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKF9v
cGVuV2l0aEZpbmRlcjopKQorICAgICAgICByZXR1cm4gW19wZGZWaWV3IGRvY3VtZW50XSAhPSBu
aWw7CisgICAgcmV0dXJuIFlFUzsKK30KKworLy8gTUFSSzogUERGVmlldyBkZWxlZ2F0ZSBtZXRo
b2RzCiAKIC0gKHZvaWQpUERGVmlld09wZW5QREZJbk5hdGl2ZUFwcGxpY2F0aW9uOihQREZWaWV3
ICopc2VuZGVyCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87678</attachid>
            <date>2011-03-31 01:20:47 -0700</date>
            <delta_ts>2011-04-03 16:21:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57527-20110331012047.patch</filename>
            <type>text/plain</type>
            <size>4959</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI0NzUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzOTQwN2RjOTI5YjhlZDIz
YTY1ODMxODkxZjUwMDUxZTNhYWJmZDMzLi5lZTk5ZTA4ODMzMzIyNDc2NGM0ZWUzZGIwZTJjYmFk
Mjk4MjVjNjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjIgQEAKIDIwMTEtMDMtMzAgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViS2l0MjogTm8gIm9wZW4gaW4gcHJldmlldyIgY29udGV4
dHVhbCBtZW51IGl0ZW0gZm9yIFBERnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU3NTI3CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIG9wZW5pbmcg
YSBQREYgaW4gdGhlIGFzc29jaWF0ZWQgYXBwbGljYXRpb24gZnJvbSB0aGUKKyAgICAgICAgY29u
dGV4dCBtZW51LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUERGVmlld0NvbnRyb2xs
ZXIubW06CisgICAgICAgIChfYXBwbGljYXRpb25JbmZvRm9yTUlNRVR5cGUpOiBBZGRlZCwgY29w
aWVkIGZyb20gV2ViS2l0L1dlYlBERlZpZXcubW0KKyAgICAgICAgKC1bV0tQREZWaWV3IF9vcGVu
V2l0aEZpbmRlcjpdKTogQWRkZWQuCisgICAgICAgICgtW1dLUERGVmlldyBoaXRUZXN0Ol0pOiBB
ZGRlZCwgY29waWVkIGZyb20gV2ViS2l0L1dlYlBERlZpZXcubW0uCisgICAgICAgICgtW1dLUERG
VmlldyBtZW51Rm9yRXZlbnQ6XSk6IEFkZGVkLCBhZGFwdGVkIGZyb20gV2ViS2l0L1dlYlBERlZp
ZS5tbS4KKyAgICAgICAgKC1bV0tQREZWaWV3IHZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW06XSk6
IEFkZGVkLgorCisyMDExLTAzLTMwICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCiAKICAgICAgICAgV2ViS2l0Mjog
V2ViUHJvY2VzcyBpcyB1c2luZyA4OSUsIHdoaWxlIHZpZXdpbmcgYSBQREYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BERlZpZXdDb250cm9sbGVyLm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUERGVmlld0NvbnRyb2xsZXIubW0KaW5k
ZXggNWM2NDAwMDE1YTgxNTMzZjI0YzI0M2QxM2U4MmQzNGIyOWE3M2Q5Mi4uZmRlY2U3N2IyOWU5
NmY1Y2UzOTgwYTBjYTNlNDQxNzI4ZDg3YzFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvUERGVmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvUERGVmlld0NvbnRyb2xsZXIubW0KQEAgLTUxLDcgKzUxLDMw
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiBAZW5kCiAKIGV4dGVybiAiQyIgTlNTdHJpbmcg
Kl9OU1BhdGhGb3JTeXN0ZW1GcmFtZXdvcmsoTlNTdHJpbmcgKmZyYW1ld29yayk7CisKKy8vIE1B
Uks6IEMgVVRJTElUWSBGVU5DVElPTlMKKworc3RhdGljIHZvaWQgX2FwcGxpY2F0aW9uSW5mb0Zv
ck1JTUVUeXBlKE5TU3RyaW5nICp0eXBlLCBOU1N0cmluZyAqKm5hbWUsIE5TSW1hZ2UgKippbWFn
ZSkKK3sKKyAgICBBU1NFUlQobmFtZSk7CisgICAgQVNTRVJUKGltYWdlKTsKICAgICAKKyAgICBD
RlVSTFJlZiBhcHBVUkwgPSBuaWw7CisKKyAgICBPU1N0YXR1cyBlcnJvciA9IExTQ29weUFwcGxp
Y2F0aW9uRm9yTUlNRVR5cGUoKENGU3RyaW5nUmVmKXR5cGUsIGtMU1JvbGVzQWxsLCAmYXBwVVJM
KTsKKyAgICBpZiAoZXJyb3IgIT0gbm9FcnIpCisgICAgICAgIHJldHVybjsKKworICAgIE5TU3Ry
aW5nICphcHBQYXRoID0gWyhOU1VSTCopYXBwVVJMIHBhdGhdOworICAgIGlmIChhcHBVUkwpCisg
ICAgICAgIENGUmVsZWFzZShhcHBVUkwpOworCisgICAgKmltYWdlID0gW1tOU1dvcmtzcGFjZSBz
aGFyZWRXb3Jrc3BhY2VdIGljb25Gb3JGaWxlOmFwcFBhdGhdOworICAgIFsqaW1hZ2Ugc2V0U2l6
ZTpOU01ha2VTaXplKDE2LCAxNildOworCisgICAgKm5hbWUgPSBbW05TRmlsZU1hbmFnZXIgZGVm
YXVsdE1hbmFnZXJdIGRpc3BsYXlOYW1lQXRQYXRoOmFwcFBhdGhdOworfQorCiBAaW50ZXJmYWNl
IFdLUERGVmlldyA6IE5TVmlldwogewogICAgIFBERlZpZXdDb250cm9sbGVyKiBfcGRmVmlld0Nv
bnRyb2xsZXI7CkBAIC0xNTksNiArMTgyLDEzIEBAIGV4dGVybiAiQyIgTlNTdHJpbmcgKl9OU1Bh
dGhGb3JTeXN0ZW1GcmFtZXdvcmsoTlNTdHJpbmcgKmZyYW1ld29yayk7CiAgICAgICAgIFtzZWxm
IF91cGRhdGVQcmVmZXJlbmNlc1Nvb25dOwogfQogCistICh2b2lkKV9vcGVuV2l0aEZpbmRlcjoo
aWQpc2VuZGVyCit7CisgICAgX3BkZlZpZXdDb250cm9sbGVyLT5vcGVuUERGSW5GaW5kZXIoKTsK
K30KKworLy8gTUFSSzogTlNWaWV3IG92ZXJyaWRlcworCiAtICh2b2lkKXZpZXdEaWRNb3ZlVG9X
aW5kb3cKIHsKICAgICBpZiAoIVtzZWxmIHdpbmRvd10pCkBAIC0xODEsNyArMjExLDY2IEBAIGV4
dGVybiAiQyIgTlNTdHJpbmcgKl9OU1BhdGhGb3JTeXN0ZW1GcmFtZXdvcmsoTlNTdHJpbmcgKmZy
YW1ld29yayk7CiAgICAgW25vdGlmaWNhdGlvbkNlbnRlciByZW1vdmVPYnNlcnZlcjpzZWxmIG5h
bWU6X3dlYmtpdF9QREZWaWV3UGFnZUNoYW5nZWROb3RpZmljYXRpb24gb2JqZWN0Ol9wZGZWaWV3
XTsKIH0KIAotLy8gUERGVmlldyBkZWxlZ2F0ZSBtZXRob2RzCistIChOU1ZpZXcgKiloaXRUZXN0
OihOU1BvaW50KXBvaW50Cit7CisgICAgLy8gT3ZlcnJpZGUgaGl0VGVzdCBzbyB3ZSBjYW4gb3Zl
cnJpZGUgbWVudUZvckV2ZW50LgorICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TQXBwIGN1cnJlbnRF
dmVudF07CisgICAgTlNFdmVudFR5cGUgdHlwZSA9IFtldmVudCB0eXBlXTsKKyAgICBpZiAodHlw
ZSA9PSBOU1JpZ2h0TW91c2VEb3duIHx8ICh0eXBlID09IE5TTGVmdE1vdXNlRG93biAmJiAoW2V2
ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaykpKQorICAgICAgICByZXR1cm4g
c2VsZjsKKworICAgIHJldHVybiBbc3VwZXIgaGl0VGVzdDpwb2ludF07Cit9CisKKy0gKE5TTWVu
dSAqKW1lbnVGb3JFdmVudDooTlNFdmVudCAqKXRoZUV2ZW50Cit7CisgICAgTlNNZW51ICptZW51
ID0gW1tOU01lbnUgYWxsb2NdIGluaXRXaXRoVGl0bGU6QCIiXTsKKworICAgIE5TRW51bWVyYXRv
ciAqbWVudUl0ZW1FbnVtZXJhdG9yID0gW1tbX3BkZlZpZXcgbWVudUZvckV2ZW50OnRoZUV2ZW50
XSBpdGVtQXJyYXldIG9iamVjdEVudW1lcmF0b3JdOworICAgIHdoaWxlIChOU01lbnVJdGVtICpp
dGVtID0gW21lbnVJdGVtRW51bWVyYXRvciBuZXh0T2JqZWN0XSkgeworICAgICAgICBOU01lbnVJ
dGVtICppdGVtQ29weSA9IFtpdGVtIGNvcHldOworICAgICAgICBbbWVudSBhZGRJdGVtOml0ZW1D
b3B5XTsKKyAgICAgICAgW2l0ZW1Db3B5IHJlbGVhc2VdOworCisgICAgICAgIGlmIChbaXRlbSBh
Y3Rpb25dICE9IEBzZWxlY3Rvcihjb3B5OikpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAvLyBBZGQgaW4gYW4gIk9wZW4gd2l0aCA8ZGVmYXVsdCBQREYgdmlld2VyPiIgaXRlbQor
ICAgICAgICBOU1N0cmluZyAqYXBwTmFtZSA9IG5pbDsKKyAgICAgICAgTlNJbWFnZSAqYXBwSWNv
biA9IG5pbDsKKworICAgICAgICBfYXBwbGljYXRpb25JbmZvRm9yTUlNRVR5cGUoQCJhcHBsaWNh
dGlvbi9wZGYiLCAmYXBwTmFtZSwgJmFwcEljb24pOworICAgICAgICBpZiAoIWFwcE5hbWUpIHsK
KyAgICAgICAgICAgIC8vIEZJWE1FOiBMb2NhbGl6ZSB0aGlzLgorICAgICAgICAgICAgYXBwTmFt
ZSA9IEAiRmluZGVyIjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRvIG1hdGNoIHRoZSBQREZL
aXQgc3R5bGUsIHdlJ2xsIGFkZCBPcGVuIHdpdGggUHJldmlldyBldmVuIHdoZW4gdGhlcmUncyBu
byBkb2N1bWVudCB5ZXQgdG8gdmlldywgYW5kCisgICAgICAgIC8vIGRpc2FibGUgaXQgdXNpbmcg
dmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbS4KKyAgICAgICAgLy8gRklYTUU6IExvY2FsaXplIHRo
aXMuCisgICAgICAgIE5TU3RyaW5nICp0aXRsZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiT3BlbiB3aXRoICVAIiwgYXBwTmFtZV07CisgICAgICAgIGl0ZW0gPSBbW05TTWVudUl0ZW0g
YWxsb2NdIGluaXRXaXRoVGl0bGU6dGl0bGUgYWN0aW9uOkBzZWxlY3Rvcihfb3BlbldpdGhGaW5k
ZXI6KSBrZXlFcXVpdmFsZW50OkAiIl07CisgICAgICAgIGlmIChhcHBJY29uKQorICAgICAgICAg
ICAgW2l0ZW0gc2V0SW1hZ2U6YXBwSWNvbl07CisgICAgICAgIFttZW51IGFkZEl0ZW06W05TTWVu
dUl0ZW0gc2VwYXJhdG9ySXRlbV1dOworICAgICAgICBbbWVudSBhZGRJdGVtOml0ZW1dOworICAg
ICAgICBbaXRlbSByZWxlYXNlXTsKKyAgICB9CisKKyAgICByZXR1cm4gW21lbnUgYXV0b3JlbGVh
c2VdOworfQorCisvLyBNQVJLOiBOU1VzZXJJbnRlcmZhY2VWYWxpZGF0aW9ucyBQUk9UT0NPTCBJ
TVBMRU1FTlRBVElPTgorCistIChCT09MKXZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW06KGlkIDxO
U1ZhbGlkYXRlZFVzZXJJbnRlcmZhY2VJdGVtPilpdGVtCit7CisgICAgU0VMIGFjdGlvbiA9IFtp
dGVtIGFjdGlvbl07CisgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IoX29wZW5XaXRoRmluZGVy
OikpCisgICAgICAgIHJldHVybiBbX3BkZlZpZXcgZG9jdW1lbnRdICE9IG5pbDsKKyAgICByZXR1
cm4gWUVTOworfQorCisvLyBNQVJLOiBQREZWaWV3IGRlbGVnYXRlIG1ldGhvZHMKIAogLSAodm9p
ZClQREZWaWV3T3BlblBERkluTmF0aXZlQXBwbGljYXRpb246KFBERlZpZXcgKilzZW5kZXIKIHsK
</data>
<flag name="review"
          id="80111"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>