2018-02-16  Ling Ho  <lingho@apple.com>

        Apply Bugzilla patches for CVE-2018-5123
        https://bugs.webkit.org/show_bug.cgi?id=182884

        Reviewed by Alexey Proskuryakov.

        * Bugzilla/CGI.pm:
        (_prevent_unsafe_response):
        (header):
        * attachment.cgi:

2017-06-22  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        pretty patch doesn't show image diffs with newer versions of git
        https://bugs.webkit.org/show_bug.cgi?id=173691

        A new security check added in git >= 2.3.3 causes it to abort
        when the tool runs "git apply" to generate the images.
        Detect if git supports the flag --unsafe-paths and pass it.

        Reviewed by Darin Adler.

        * PrettyPatch/PrettyPatch.rb:

2017-05-26  Devin Rousso  <drousso@apple.com>

        Provide bug information when https://webkit.org/b/# URLs are added in comments
        https://bugs.webkit.org/show_bug.cgi?id=169707

        Reviewed by David Kilzer.

        * Bugzilla/Template.pm:
        (quoteUrls):

2017-03-25  David Kilzer  <ddkilzer@apple.com>

        [Bugzilla] Add a checkbox to add self to the CC list when creating or editing an attachment
        <https://webkit.org/b/124047>

        Original patch by Csaba Osztrogonác.

        Reviewed by Daniel Bates.

        * template/en/default/attachment/reviewform.html.tmpl:
        Add template for "Add me to CC list" by default.  This
        adds the reviewer to the CC list whether the "Preview"
        or "Publish" button is used.  Only the "Preview" button
        allows the checkbox to be unchecked, though.

2017-03-23  David Kilzer  <ddkilzer@apple.com>

        Fix Apache::SizeLimit unshared size limit in mod_perl.pl for bugs.webkit.org
        <https://webkit.org/b/169926>

        Reviewed by Brent Fulgham.

        * mod_perl.pl: Update syntax for setting unshared size
        limit, and bump it up another 100 Mb so children don't
        respawn as quickly.

2017-03-21  David Kilzer  <ddkilzer@apple.com>

        Commit local changes for Bugzilla 5.0.3

        * images/favicon.ico: Update favicon from Dec 11, 2015.
        * data/params.json: Deleted.

2017-03-21  David Kilzer  <ddkilzer@apple.com>

        Upgrade to Bugzilla 5.0.3.

2017-02-01  Joseph Pecoraro  <pecoraro@apple.com>

        Patch Details: EWS Bubbles wrap on Patch Details page
        https://bugs.webkit.org/show_bug.cgi?id=167709

        Reviewed by Ryosuke Niwa.

        * template/en/default/attachment/edit.html.tmpl:
        Match the iframe size in list.html.tmpl.

2017-01-28  Joseph Pecoraro  <pecoraro@apple.com>

        Patch Review: EWS Bubbles wrap to multiple lines but can fit on one line
        https://bugs.webkit.org/show_bug.cgi?id=167519

        Reviewed by Ryosuke Niwa.

        While we do post message to determine the size, the fact that we have
        constrained the iframe to a size of 450px meant its body is 450px and
        the div containing the bubbles wraps at 450px. Its full size (~458px)
        is not returned. Although we solve this artifical constraint problem
        inside of the bubble containerMetrics measuring, up this default value
        from 450 to 460 to reduce UI jitter (the current measurement on my
        machine is 458px).

        * PrettyPatch/PrettyPatch.rb:

2017-01-19  Timothy Hatcher  <timothy@hatcher.name>

        Bugzilla email autocomplete does not work on third email field of advanced search page
        https://bugs.webkit.org/show_bug.cgi?id=167204

        Reviewed by Alexey Proskuryakov.

        * committers-autocomplete.js: Added email3 to SINGLE_EMAIL_INPUTS list.

2016-10-09  Simon Fraser  <simon.fraser@apple.com>

        Convert contributors.json to a flat list
        https://bugs.webkit.org/show_bug.cgi?id=163183

        Reviewed by Darin Adler.
        
        Make contributors.json easier to maintain by eliminating the big groupings ("Committers", "Reviewers" etc)
        and moving that data to a "status" property on each contributor.
        
        Fix script that does bugzilla autocomplete.

        * committers-autocomplete.js:
        (statusToType):
        (parseCommittersPy):
        (parseType): Deleted.

2016-07-16  David Kilzer  <ddkilzer@apple.com>

        Use secure (https) links on enter_bug.cgi
        <https://webkit.org/b/159853>

        Reviewed by Alexey Proskuryakov.

        * template/en/default/global/choose-product.html.tmpl:
        Use https instead of http for links to webkit.org.

2016-05-18  David Kilzer  <ddkilzer@apple.com>

        CVE-2016-2803: [SECURITY] XSS vulnerability in dependency graphs via bug summary
        <https://bugzilla.mozilla.org/show_bug.cgi?id=1253263>

        Merge Bugzilla upstream master dd61903154fd363fb4e763d60aa155a507c2c3fc.

        * showdependencygraph.cgi:
        (CreateImagemap): Fix XSS vulnerability.

2016-05-05  David Kilzer  <ddkilzer@apple.com>

        bugs.webkit.org: "See Also" field should support Chromium bugs

        Merge Bugzilla upstream master 3af55bfe0bd10a85b7cd69e26a19034a6d2e78f5.
        <https://bugzilla.mozilla.org/show_bug.cgi?id=1252782>

        * Bugzilla/BugUrl.pm: Add Bugzilla::BugUrl::Chromium class to
        list of classes that parse supported URLs.
        * Bugzilla/BugUrl/Chromium.pm: Added.
        (should_handle):
        (_check_value):
        * template/en/default/global/user-error.html.tmpl: Update error
        message.

2015-12-09  Daniel Bates  <dabates@apple.com>

        REGRESSION: code-review-tests.html fails with error "Received an error at line 214"
        https://bugs.webkit.org/show_bug.cgi?id=152103

        Reviewed by Darin Adler.

        Fixes an issue where opening the file code-review-test.html in Safari shows the error message
        "FAIL: Received an error at line 214" and in the console there is a JavaScript TypeError:
            undefined is not an object (evaluating '$('.overallComments textarea').val().trim')

        Notice that test testReaddDiscardedCommentWithPreviousComment() is the only test that appends
        the toolbar, which inserts the overall comments textarea. The test testSaveCommentsWithMissingLineIds()
        assumes that the own properties of the window object are enumerated in the same order as they
        were defined in the file code-review-test.html such that the test testReaddDiscardedCommentWithPreviousComment()
        is executed before test testSaveCommentsWithMissingLineIds(). The behavior of JavaScriptCore with
        respect to the enumeration order of properties on the window object have changed since the
        test testSaveCommentsWithMissingLineIds() was written such that the order of the own properties
        on the window object do not reflect the order in which they were defined in the file. We should
        append the toolbar before running the tests and explicitly execute the tests in chosen order so
        as to be able to reason of the test results regardless of the enumeration ordering of the
        properties in the DOM window object.

        Also, removed duplicate 'd' in the name of function "testReaddDiscardedCommentWithPreviousComment"
        such that it reads "testReadDiscardedCommentWithPreviousComment".

        * code-review-test.html:

2015-11-17  Lucas Forschler  <lforschler@apple.com>

        bugs.webkit.org is running with changes that are not checked in.
        Check them in.

        Reviewed by Matt Hanson.
 
2015-07-30  Aakash Jain  <aakash_jain@apple.com>

        Replace Google App Engine with AppScale
        https://bugs.webkit.org/show_bug.cgi?id=147178

        Reviewed by Daniel Bates.

        * code-review.js:
        * template/en/default/attachment/edit.html.tmpl:
        * template/en/default/attachment/list.html.tmpl:
        * template/en/default/attachment/reviewform.html.tmpl:

2014-09-03  David Kilzer  <ddkilzer@apple.com>

        Make images work with patches created using svn 1.7
        <http://webkit.org/b/136507>

        Reviewed by Darin Adler.

        * PrettyPatch/PrettyPatch.rb:
        (PrettyPatch.prettify): Delete redundant patches that claim
        newly added images are actually removed.
        (PrettyPatch.SVN_BINARY_FILE_MARKER_FORMAT): Rename from
        BINARY_FILE_MARKER_FORMAT.
        (PrettyPatch.SVN_IMAGE_FILE_MARKER_FORMAT): Rename from
        IMAGE_FILE_MARKER_FORMAT.
        (PrettyPatch.SVN_PROPERTY_CHANGES_FORMAT): Add. Used to find
        and ignore property changes in svn 1.7 patches.
        (PrettyPatch.SVN_START_OF_BINARY_DATA_FORMAT): Rename from
        START_OF_BINARY_DATA_FORMAT.
        (FileDiff.filename): Add read-only accessor.
        (FileDiff.image): Add read-only accessor.
        (FileDiff.image_url): Add read-only accessor.
        (FileDiff.initialize): Add special case for svn-1.7 image
        patches that add a file.  Update various regex constants per
        above.

2014-02-25  Jozsef Berta  <jberta.u-szeged@partner.samsung.com>

        PrettyPatch.rb should be more descriptive for "git diff -M" styled patches
        https://bugs.webkit.org/show_bug.cgi?id=125514

        Reviewed by Csaba Osztrogonác.

        * PrettyPatch/PrettyPatch.rb: PrettyPatch.rb is modified to show which file was renamed or moved.

2013-12-16  Dániel Bátyai  <Batyai.Daniel@stud.u-szeged.hu>

        PrettyPatch.rb doesn't handle diffs where lines matching /^--/ are missing properly
        https://bugs.webkit.org/show_bug.cgi?id=54928

        Reviewed by Adam Roben.

        PrettyPatch will now check if the next line after /^--- / matches /^+++ /, and if not,
        then it's just a normal line

        * PrettyPatch/PrettyPatch.rb:

2013-08-16  David Farler  <dfarler@apple.com>

        PrettyPatch: Wrap pre blocks
        https://bugs.webkit.org/show_bug.cgi?id=119906

        Reviewed by Darin Adler.

        * PrettyPatch/PrettyPatch.rb:
        <pre> will use the same wrap settings as the text class:
        white-space: pre-wrap and word-wrap: break-word.

2013-07-16  James Craig  <james@cookiecrook.com>

        AX: Add a 'choose product' link for the new-ax-bug alias.
        https://bugs.webkit.org/show_bug.cgi?id=118697

        Reviewed by Chris Fleizach.

        * template/en/custom/global/choose-product.html.tmpl: Added new link for accessibility bugs.

2013-07-09  Martin Robinson  <mrobinson@igalia.com>

        PrettyPatch doesn't handle UTF-8 characters correctly
        https://bugs.webkit.org/show_bug.cgi?id=45760

        Reviewed by Adam Roben.

        * PrettyPatch/PrettyPatch.rb: Since the diff lines are typically in UTF-8 and the results
        of PrettyPatch may be served by a web server or not (for instance when accessed via
        webkit-patch pretty-diff), we should use a meta tag to force the page encoding to UTF-8.

2013-05-23  Patrick Gansterer  <paroga@webkit.org>

        EWS bubbles need more space
        https://bugs.webkit.org/show_bug.cgi?id=116675

        Reviewed by Andreas Kling.

        * template/en/custom/attachment/list.html.tmpl:

2013-04-16  Ryosuke Niwa  <rniwa@webkit.org>

        Build fix after r148527.

        * committers-autocomplete.js:
        (WebKitCommitters):

2013-04-16  Ryosuke Niwa  <rniwa@webkit.org>

        The list of contributors in committers.py should be a separate JSON
        https://bugs.webkit.org/show_bug.cgi?id=114673

        Reviewed by Anders Carlsson.

        Updated the Bugzilla autocompletion code to use contributors.json.
        Basically, this removes a large chunk of this JavaScript file.

        * committers-autocomplete.js:
        (WebKitCommitters):

2013-04-13  Ryosuke Niwa  <rniwa@webkit.org>

        Delete bubbles from webkit-commit-queue.appspot.com now that we've completed the transition
        https://bugs.webkit.org/show_bug.cgi?id=114476

        Reviewed by Gyuyoung Kim.

        * code-review.js:
        * template/en/custom/attachment/edit.html.tmpl:
        * template/en/custom/attachment/list.html.tmpl:
        * template/en/custom/attachment/reviewform.html.tmpl:

2013-04-10  Ryosuke Niwa  <rniwa@webkit.org>

        Make old EWS bubbles less opaque to disambiguate two set of bubbles.

        Rubber-stamped by Benjamin Poulain.

        * code-review.js:
        * template/en/custom/attachment/edit.html.tmpl:
        * template/en/custom/attachment/list.html.tmpl:
        * template/en/custom/attachment/reviewform.html.tmpl:

2013-04-10  Ryosuke Niwa  <rniwa@webkit.org>

        Bugzilla should show bubbles from webkit-queues.appspot.com
        https://bugs.webkit.org/show_bug.cgi?id=114391

        Reviewed by Benjamin Poulain.

        Include iframe from webkit-queues.appspot.com as well as one for webkit-commit-queue.appspot.com.

        * code-review.js:
        * template/en/custom/attachment/edit.html.tmpl:
        * template/en/custom/attachment/list.html.tmpl:
        * template/en/custom/attachment/reviewform.html.tmpl:

2013-03-21  Ryosuke Niwa  <rniwa@webkit.org>

        EWS bubbles need more space
        https://bugs.webkit.org/show_bug.cgi?id=112964

        Reviewed by Philip Rogers.

        Increased the width from 500px to 600px so that all bubbles fit.

        * template/en/custom/attachment/list.html.tmpl:

2013-03-08  David Kilzer  <ddkilzer@apple.com>

        (CVE-2013-0786) [SECURITY] build_subselect() leaks the existence of products and components you cannot access
        <https://bugzilla.mozilla.org/show_bug.cgi?id=824399>
        <exp2://Ticket/14465628>

        Applied "v5 patch, 3.6" to bugs.webkit.org.

        * Bugzilla/Config/GroupSecurity.pm:
        (get_param_list):
        * buglist.cgi:
        * report.cgi:
        * template/en/default/admin/params/groupsecurity.html.tmpl:

2013-03-08  David Kilzer  <ddkilzer@apple.com>

        (CVE-2013-0785) [SECURITY] XSS in show_bug.cgi when using an invalid page format
        <https://bugzilla.mozilla.org/show_bug.cgi?id=842038>
        <exp2://Ticket/14465628>

        Applied "patch for 3.6 and 4.0, v1" to bugs.webkit.org.

        * Bugzilla/Template.pm:
        (get_format):
        * show_bug.cgi:

2013-02-01  Nathan de Vries  <ndevries@apple.com>

        Allow prettify.rb to be run from any directory, and don't hard-code the system ruby path
        https://bugs.webkit.org/show_bug.cgi?id=108569

        Reviewed by Joseph Pecoraro.

        * PrettyPatch/prettify.rb:

2013-01-03  James Robinson  <jamesr@chromium.org>

        Avoid mixed content when expanding context in code review tool
        https://bugs.webkit.org/show_bug.cgi?id=106060

        Reviewed by Tony Chang.

        Example failure: "The page at https://bugs.webkit.org/attachment.cgi?id=181222&action=review displayed insecure
        content from http://svn.webkit.org/repository/webkit/trunk/Source/WebCore/page/EventHandler.cpp?p=138617." This
        loads from "//svn.webkit.org/..." so the protocol matches.

        * code-review.js:

2013-01-02  Ojan Vafai  <ojan@chromium.org>

        REGRESSION: Review tool sometimes doesn't include some comments in preview & posts
        https://bugs.webkit.org/show_bug.cgi?id=105252

        Reviewed by Tony Chang.

        When adding context, the LineContainer for the context line can get removed.
        In that case, forEachLine needs to know to keep looping past that line number.

        Also, make it so that you can't leave comments on context lines.

        * code-review-test.html:
        * code-review.js:

2012-12-30  Martin Robinson  <mrobinson@igalia.com>

        PrettyDiff.rb fails to render image diffs with Ruby 1.9.3p194
        https://bugs.webkit.org/show_bug.cgi?id=104932

        Reviewed by Eric Seidel.

        Ruby 1.9 added the concept of string encodings, so the use of `match' with binary data
        treats it as UTF-8. Forcing the png_bytes string to have the "binary" encoding avoids
        this error.

        * PrettyPatch/PrettyPatch.rb: Use force_encoding.

2012-12-06  Ojan Vafai  <ojan@chromium.org>

        Review page is super flakey now
        https://bugs.webkit.org/show_bug.cgi?id=104331

        Committing without review since this is breaking the code review tool.

        remove is only shipping in Chromium. Use jQuery's remove instead.

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2012-12-05  Ojan Vafai  <ojan@chromium.org>

        Make the strip line numbers link into a checkbox
        https://bugs.webkit.org/show_bug.cgi?id=104187

        Reviewed by Tony Chang.

        The link text was confusing.

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2012-12-05  Ojan Vafai  <ojan@chromium.org>

        Sanitize content on copy in the code review tool
        https://bugs.webkit.org/show_bug.cgi?id=104155

        Reviewed by Tony Chang.

        Always remove expand/header/annotate links. Provide an option
        to remove line numbers as well. Store the option in localStorage so
        people can always get whichever behavior they want.

        A better solution would be to restructure the DOM, but that would require gutting
        the whole code review tool and would make it difficult to include line numbers if
        you wanted them.

        * PrettyPatch/PrettyPatch.rb:
        * code-review-test.html:
        * code-review.js:

2012-12-04  Ojan Vafai  <ojan@chromium.org>

        Use sticky positioning for the code review toolbar
        https://bugs.webkit.org/show_bug.cgi?id=104056

        Reviewed by Adam Barth.

        This simplifies the code and gives a nicer user-experience.
        Also, while here, I fixed up the CSS to not have toolbar items
        overlap when you make the window too small.

        * PrettyPatch/PrettyPatch.rb:
        * code-review-test.html:
        * code-review.js:

2012-12-04  Ojan Vafai  <ojan@chromium.org>

        Properly create the header links in the code review tool
        https://bugs.webkit.org/show_bug.cgi?id=104037

        Reviewed by Adam Barth.

        Right now, we just prepend "header" to the two existing links and change
        the first link to point to the header. The problem is that jQuery's prepend
        method just prepends to each item in the jQuery object instead of adding
        the item to the beginning of the list as this code assumed.

        * code-review-test.html:
        * code-review.js:

2012-12-04  Ojan Vafai  <ojan@chromium.org>

        Can't add followup comment to a previous comment
        https://bugs.webkit.org/show_bug.cgi?id=104025

        Reviewed by Adam Barth.

        If we side-by-sidify a shared diff line, and then apply
        a previous comment, we would incorrectly put the comment
        on the Line instead of the LineContainer.

        Also, get rid of global next_line_id to simplify testing.

        * code-review-test.html:
        * code-review.js:

2012-11-06  Ryosuke Niwa  <rniwa@webkit.org>

        committers-autocomplete.js works only with WebKit based browsers
        https://bugs.webkit.org/show_bug.cgi?id=66752

        Reviewed by Csaba Osztrogonác.

        Based on the patch posted by Peter Gal. Attach event listeners
        to all input elements we want to enable auto-completions on.

        * committers-autocomplete.js:

2012-10-03  Simon Fraser  <simon.fraser@apple.com>

        Make the status bubble iframe big enough to show all the bubbles
        https://bugs.webkit.org/show_bug.cgi?id=98329

        Reviewed by Eric Seidel.

        Make the status bubble iframe big enough.

        * template/en/custom/attachment/edit.html.tmpl:
        * template/en/custom/attachment/list.html.tmpl:

2012-10-03  Simon Pena  <spena@igalia.com>

        ruby1.9 fails in PrettyPatch.rb with invalid byte sequence in UTF-8
        https://bugs.webkit.org/show_bug.cgi?id=91212

        Reviewed by Hajime Morita.

        ruby1.9 changed the way it handles encoding, so the gsub method used
        when normalizing line ending complains of invalid byte sequence in UTF-8.
        This patch uses the "encode" string method for versions of Ruby >= 1.9
        to provide the encoding conversion (keeping the current implementation in
        Ruby 1.8).

        * PrettyPatch/PrettyPatch.rb: Use the "encode" string method for encoding
        conversion when the Ruby version is >= 1.9.

2012-09-26  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r129521.
        http://trac.webkit.org/changeset/129521
        https://bugs.webkit.org/show_bug.cgi?id=97710

        Broke autocomplete on enter_bug.cgi (Requested by abarth on
        #webkit).

        * committers-autocomplete.js:

2012-09-25  Peter Gal  <galpeter@inf.u-szeged.hu>

        committers-autocomplete.js works only with WebKit based browsers
        https://bugs.webkit.org/show_bug.cgi?id=66752

        Reviewed by Darin Adler.

        Modified the code do only add event listeners to the given inputs,
        and not to the full document.

        * committers-autocomplete.js:

2012-09-24  Peter Beverloo  <peter@chromium.org>

        Allow robots to index bugs on Bugzilla
        https://bugs.webkit.org/show_bug.cgi?id=95688

        Reviewed by Eric Seidel.

        This allows robots to access show_bug.cgi, thus granting them access to
        index contents and discussion on WebKit bugs. All other pages, except
        for the site index itself, still have indexing disabled.

        * robots.txt:

2012-07-13  Ojan Vafai  <ojan@chromium.org>

        PrettyPatch.rb complains about missing checksum for new pixel results
        https://bugs.webkit.org/show_bug.cgi?id=88368

        Reviewed by Tony Chang.

        When adding or removing a file, we incorrectly iterpreted not having an image
        as not having a checksum.

        * PrettyPatch/PrettyPatch.rb:
        * PrettyPatch/PrettyPatch_test.rb:
        I tried to fix the TempFile issue in these tests, but after a couple hours
        of banging my head against this, I have no idea what's breaking.

2012-07-11  Alice Cheng  <alice_cheng@apple.com>

        Deleting content at the top of prettypatch emails destroys HTML formatting
        https://bugs.webkit.org/show_bug.cgi?id=90700
        <rdar://problem/7488232>

        Reviewed by David Kilzer.

        * PrettyPatch/PrettyPatch.rb:

2012-07-10  Adam Barth  <abarth@webkit.org>

        bugs.webkit.org has mixed content
        https://bugs.webkit.org/show_bug.cgi?id=90907

        Reviewed by Eric Seidel.

        Now that we detect http XMLHttpRequests as mixed content, I've noticed
        that we're loading committers.py over http instead of https.  For
        better security, we should use https.

        * committers-autocomplete.js:

2012-05-30  Ojan Vafai  <ojan@chromium.org>

        Only include the image checksum error in pretty-diffs for -expected.png files.
        https://bugs.webkit.org/show_bug.cgi?id=87881

        Reviewed by Tony Chang.

        * PrettyPatch/PrettyPatch.rb:
        * PrettyPatch/PrettyPatch_test.rb:

2012-05-29  Ojan Vafai  <ojan@chromium.org>

        Show an error in the pretty diff when an image lacks a checksum
        https://bugs.webkit.org/show_bug.cgi?id=87791

        Reviewed by Dirk Pranke.

        * PrettyPatch/PrettyPatch.rb:
        * PrettyPatch/PrettyPatch_test.rb:

2012-04-01  Adam Barth  <abarth@webkit.org>

        Code review tool no longer needs to work around position:fixed handling on iPad
        https://bugs.webkit.org/show_bug.cgi?id=82850

        Reviewed by Eric Seidel.

        We no longer need to avoid position:fixed on iPad because Mobile Safari
        now does something reasonable with position:fixed elements.

        * code-review.js:

2012-03-09  Ashod Nakashian  <ashodnakashian@yahoo.com>

        Bash scripts should support LF endings only
        https://bugs.webkit.org/show_bug.cgi?id=79509

        Reviewed by David Kilzer.

        * contrib/yp_nomail.sh: Added property svn:executable.

2012-03-05  Alexander Færøy  <alexander.faeroy@nokia.com>

        The Bugzilla autocompleter doesn't support multiple Unicode characters per name
        https://bugs.webkit.org/show_bug.cgi?id=80319

        Reviewed by Adam Barth.

        The current regular expression for matching Unicode characters uses
        the global modifier, which means that it will never enter its second
        iteration of the match-loop. This patch fixes this by removing the
        global modifier from the regex.

        * committers-autocomplete.js:
        (WebKitCommitters):

2012-01-03  Ojan Vafai  <ojan@chromium.org>

        Increment the code-review.js version number to bust browser
        caches.

        * PrettyPatch/PrettyPatch.rb:

2011-12-13  Ojan Vafai  <ojan@chromium.org>

        Give a resize handle for sidebyside diffs.
        https://bugs.webkit.org/show_bug.cgi?id=74465

        Reviewed by Ryosuke Niwa.

        This gives a drag handle so you can make the side-by-side
        diff not be 50/50 on a per-file-diff basis. This is useful
        for cases like new files where there's no value on the
        left side.

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2011-12-13  Ojan Vafai  <ojan@chromium.org>

        Expanding context is broken for prepare-ChangeLog in the code review tool.
        https://bugs.webkit.org/show_bug.cgi?id=74458

        Reviewed by Adam Barth.

        * code-review-test.html:
        -Moved all the tests into test* functions.
        -Automated calling all test* functions.
        -Added testIsChangeLog.
        * code-review.js:
        Made the check for whether it's a ChangeLog file more robust.

2011-12-13  Ojan Vafai  <ojan@chromium.org>

        Fix bug in the code review tool when readding a discarded comment
        https://bugs.webkit.org/show_bug.cgi?id=74450

        Reviewed by Adam Barth.

        If you discard a comment that has a corresponding previousComment,
        then we would incorrectly remove the comment baseline. So, the next
        time you added a comment by clicking on the previousComment, we
        would get undefined as the start line for the new comment.

        All of this works fine until you try to restore the comment from
        localStorage, at which point we throw an error because the start
        line is undefined.

        Also added some failsafes to better handle the case of corrupted comments.

        * code-review-test.html:
        * code-review.js:

2011-11-15  Tony Chang  <tony@chromium.org>

        set a max-width on the codereview overall comments textarea
        https://bugs.webkit.org/show_bug.cgi?id=72415

        Reviewed by Ojan Vafai.

        Otherwise, when resizing the textarea you can end up making wider, but
        are no longer able to click the resize gripper to make it smaller
        (it's under another div).

        * PrettyPatch/PrettyPatch.rb:

2011-10-13  Adam Barth  <abarth@webkit.org>

        Would be nice if the review-tool offered to show the corresponding header
        https://bugs.webkit.org/show_bug.cgi?id=63963

        Reviewed by Ojan Vafai.

        This is a first cut at adding links to the header file in the review
        tool.  If folks like this feature, we can cover more cases in the
        future.

        * code-review.js:

2011-09-14  Ben Wells  <benwells@chromium.org>

        PrettyPatch should handle "delta" patch mechanism in git binary patches
        https://bugs.webkit.org/show_bug.cgi?id=67628

        Git patches are encoded using two mechanisms - "literal" and "delta".
        For details of these mechanisms, see the function emit_binary_diff_body
        in the git source file diff.c (https://github.com/git/git/blob/master/diff.c).

        When determining if a binary file patch is an image or not we should accept
        both literal and delta patch encodings.

        When reconstructing the images from the patches, if we have a delta patch
        we may download the previous revision from svn.webkit.org to get the image data.

        Reviewed by Adam Roben.

        * PrettyPatch/PrettyPatch.rb:
        * PrettyPatch/PrettyPatch_test.rb:

2011-09-06  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r94554.
        http://trac.webkit.org/changeset/94554
        https://bugs.webkit.org/show_bug.cgi?id=67631

        This patch did not quite fix the problem (Requested by
        benwells on #webkit).

        * PrettyPatch/PrettyPatch.rb:
        * PrettyPatch/PrettyPatch_test.rb:

2011-09-06  Ben Wells  <benwells@chromium.org>

        PrettyPatch should handle "delta" patch mechanism in git binary patches
        https://bugs.webkit.org/show_bug.cgi?id=67628

        Git patches are encoded using two mechanisms - "literal" and "delta".
        See this email from the git mailing list archive for info
        http://marc.info/?l=git&m=114682417113315&w=2

        When determining if a binary file patch is an image or not we should accept
        both literal and delta patch encodings.

        Reviewed by Shinichiro Hamaji.

        * PrettyPatch/PrettyPatch.rb:
        * PrettyPatch/PrettyPatch_test.rb:

2011-06-30  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        [reviewtool] Expanding lines "below" does not remove purple context line
        https://bugs.webkit.org/show_bug.cgi?id=63695

        Honestly, this is the last bug in the review tool that bothers me.

        * PrettyPatch/PrettyPatch.rb:
            - Jump straight to version 42, because, well, you know.
        * code-review.js:
            - In addition to removing the context bar when we expand all, we
              now remove it when we expand below (but not when we expand
              above).

2011-06-21  Adam Barth  <abarth@webkit.org>

        Reviewed by Darin Adler.

        bugs.webkit.org should use Strict-Transport-Security
        https://bugs.webkit.org/show_bug.cgi?id=63097

        Strict-Transport-Security forces all connections to bugs.webkit.org to
        use HTTPS, preventing sslstrip and other attacks.

        * .htaccess:

2011-05-04  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>

        Reviewed by Adam Roben.

        REGRESSION (r85657): webkitpy.common.prettypatch_unittest.PrettyPatchTest.test_pretty_diff_encodings failing on Leopard
        https://bugs.webkit.org/show_bug.cgi?id=60164

        Use Array#length to get the number of elements in an array. Array#count
        was added in Ruby 1.8.7, but Leopard have Ruby 1.8.6.

        * PrettyPatch/PrettyPatch.rb:

2011-05-03  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>

        Reviewed by Adam Roben.

        Add tests to PrettyPatch
        https://bugs.webkit.org/show_bug.cgi?id=57298

        Verify that 'prettify' parse the right number of files and parts
        (add/remove/shared) by checking a set of patches available in
        bugs.webkit.org.

        * PrettyPatch/PrettyPatch.rb: exported a couple a globals with
        statistics information for our test script.
        * PrettyPatch/PrettyPatch_test.rb: Added.

2011-04-22  Alexey Proskuryakov  <ap@apple.com>

        Code changes by Adam Barth. Reviewed by Ojan Vafai.

        Bugzilla autocomplete should support frequent contributors who are not committers
        https://bugs.webkit.org/show_bug.cgi?id=59209

        * committers-autocomplete.js: Support Contributor role in committers.py.

2011-04-19  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>

        Reviewed by Adam Roben.

        PrettyPatch tries to show images for deleted files
        https://bugs.webkit.org/show_bug.cgi?id=28457

        When the image data is empty, instead of generating an <img> tag, generate
        a text to indicate the image was deleted.

        * PrettyPatch/PrettyPatch.rb:

2011-04-14  Tony Chang  <tony@chromium.org>

        Reviewed by Adam Roben.

        make PrettyPatch.rb aware of checksums in png files
        https://bugs.webkit.org/show_bug.cgi?id=58387

        Patch v2 with nil checks in the case of file adds and deletes.

        * PrettyPatch/PrettyPatch.rb:

2011-04-13  Simon Fraser  <simon.fraser@apple.com>

        Revert http://trac.webkit.org/changeset/83750 because it broke PrettyPatch.
        https://bugs.webkit.org/show_bug.cgi?id=58510        

        * PrettyPatch/PrettyPatch.rb:

2011-04-12  Tony Chang  <tony@chromium.org>

        Reviewed by Adam Roben.

        make PrettyPatch.rb aware of checksums in png files
        https://bugs.webkit.org/show_bug.cgi?id=58387

        * PrettyPatch/PrettyPatch.rb:

2011-04-12  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        Review tool should work well on iPad
        https://bugs.webkit.org/show_bug.cgi?id=58351

        On the iPad, the toolbar ends up at some random position in the middle
        of the page because of how position:fixed interacts with scrolling on
        the iPad.  I feel a bit dirty using a user agent detect, but I'm not
        sure if there's a better way to detect whether the user agent has this
        behavior.

        * code-review.js:

2011-03-15  David Levin  <levin@chromium.org>

        Reviewed by Adam Barth.

        Links from code reviews to trac are incorrect for files in Source/WebKit.
        https://bugs.webkit.org/show_bug.cgi?id=56404

        * PrettyPatch/PrettyPatch.rb: Remove WebKit from the list of top level
          directories since it is now under Source.

2011-03-10  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>

        Reviewed by Adam Roben.

        Formatted Diff for attachment 23920 is mangled
        https://bugs.webkit.org/show_bug.cgi?id=21222

        The mangled diff files mentioned in the bug were using Mac line
        ending and this was causing problems for String#each_line. Now we
        normalize the line endings in patch data before processing it.

        * PrettyPatch/PrettyPatch.rb:

2011-03-10  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>

        Reviewed by Adam Roben.

        PrettyPatch displays last two lines of a git-format-patch diff strangely
        https://bugs.webkit.org/show_bug.cgi?id=29317

        If the diff section has full range information, we parse only enough to cover the
        range. This avoids incorrectly showing trailing lines (like git signature) as part
        of the patch.

        * PrettyPatch/PrettyPatch.rb:

2011-03-10  Adam Roben  <aroben@apple.com>

        Don't search for intra-line diffs in really long lines

        Doing so can lead to hangs (or at least really slow execution).

        Fixes <http://webkit.org/b/56109> run-webkit-tests sometimes times out on Windows XP Debug
        (Tests) after fast/text/large-text-composed-char-dos.html fails (due to PrettyPatch
        hanging?)

        Reviewed by David Kilzer.

        * PrettyPatch/PrettyPatch.rb:
        (PrettyPatch.MAXIMUM_INTRALINE_DIFF_LINE_LENGTH): Added this new constant.
        (PrettyPatch.DiffSection.initialize): Don't bother looking for intra-line diffs in lines
        longer than the maximum length.

2011-02-25  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        [codereviewtool] fix expand links on git diffs
        https://bugs.webkit.org/show_bug.cgi?id=55208

        In git diffs, we don't have a "revision" span at the end
        of each FileDiff.
        * code-review.js:

2011-02-23  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Tony Chang.

        autocomplete=off prevents refilling form fields on back/forward navigation
        https://bugs.webkit.org/show_bug.cgi?id=47463

        I haven't actually run this patch due to the difficulty of getting
        a bugzilla instance running. It's simple enough code that I'm not too worried
        about it.

        * committers-autocomplete.js:

2011-02-21  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        [codereviewtool] focus first visible node if no node is focused
        https://bugs.webkit.org/show_bug.cgi?id=54935

        Now hitting j/k/n/p will focus the first/last visible node
        if no other node is focused. Also tweaked the scroll into view
        logic a bit to avoid scrolling in this case.

        * code-review.js:

2011-02-21  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        [codereviewtool] remove patch fuzzing
        https://bugs.webkit.org/show_bug.cgi?id=54940

        This code is buggy and not as necessary now that we
        include svn revision numbers in uploaded patches.

        * code-review.js:

2011-02-21  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        [codereviewtool] focus comment on accept
        https://bugs.webkit.org/show_bug.cgi?id=54930

        * code-review.js:

2011-02-20  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        [codereviewtool] avoid overriding ctrl/cmd + r
        https://bugs.webkit.org/show_bug.cgi?id=54852

        * code-review.js:

2011-02-16  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        keyboard support for extending/shrinking comment context
        https://bugs.webkit.org/show_bug.cgi?id=54612

        ctrl+shift+up/down will extend/shrink the comment context when
        a comment is focused or when one is being edited.

        Also, switch over to using keydown instead of keypress events.
        This lets us share code for handling escape and other key events.
        Also, keypress is evil and should die.

        * code-review.js:

2011-02-20  Ojan Vafai  <ojan@chromium.org>

        Recommit accidental revert.
        r79180 accidentally revereted r79178.
        * code-review.js:

2011-02-20  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        [codereviewtool] add more help information
        https://bugs.webkit.org/show_bug.cgi?id=54847

        * code-review.js:

2011-02-20  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        [codereviewtool] use 'r' to focus the review select element
        https://bugs.webkit.org/show_bug.cgi?id=54845

        This allows for quick keyboard access to the toolbar items.
        Hit r to get to the review select element. Then you can
        tab to the cq/preview/publish elements.

        * code-review.js:

2011-02-20  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        [codereviewtool] don't let lines/diffblocks be mouse focusable
        https://bugs.webkit.org/show_bug.cgi?id=54851

        Unfortunately, this will only work once https://bugs.webkit.org/show_bug.cgi?id=54727
        is committed. In the interim, it won't break anything.

        * code-review.js:

2011-02-20  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        [codereviewtool] use keydown instead of keypress
        https://bugs.webkit.org/show_bug.cgi?id=54849

        There is no functional change. This is just a cleanup
        to make future patches (e.g. https://bugs.webkit.org/show_bug.cgi?id=54612)
        cleaner.

        * code-review.js:

2011-02-20  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        [codereviewtool] fix layout nit
        https://bugs.webkit.org/show_bug.cgi?id=54848

        There is occasionally an off-by-one in the 50% width
        calculation. This ensures that the add lines always
        line up with the shared context lines.

        * PrettyPatch/PrettyPatch.rb:

2011-02-20  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        [codereviewtool] make escape hide the preview form
        https://bugs.webkit.org/show_bug.cgi?id=54844

        * code-review.js:

2011-02-20  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        [codereviewtool] make enter work when an individual line is focused
        https://bugs.webkit.org/show_bug.cgi?id=54843

        * code-review.js:

2011-02-17  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        use shift+j/k to focus next/previous line
        https://bugs.webkit.org/show_bug.cgi?id=54723

        Tested on a large Hyatt change to confirm it performed fine.
        (https://bugs.webkit.org/attachment.cgi?id=82533&action=review)

        * code-review.js:

2011-02-17  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        fix escape handling in code review tool
        https://bugs.webkit.org/show_bug.cgi?id=54722

        This broke with http://trac.webkit.org/changeset/78948.
        Apparently jquery events get a wrapped object that
        does not expose keyIdentifier.

        * code-review.js:

2011-02-17  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        create comments when hitting enter with a focused diff
        https://bugs.webkit.org/show_bug.cgi?id=54719

        * code-review.js:

2011-02-17  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        use actual browser focus in the code review tool
        https://bugs.webkit.org/show_bug.cgi?id=54726

        This makes keyboard handling play better with focusable element
        (i.e. links/textareas/buttons). Also, in theory, this makes
        the review tool more amenable to screen readers (I think).

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2011-02-17  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Antonio Gomes.

        make event handling work in Gecko
        https://bugs.webkit.org/show_bug.cgi?id=54702

        Gecko doesn't support the global event property. It's an IE-ism.

        * code-review.js:

2011-02-14  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        allow for modifying comments without the mouse
        https://bugs.webkit.org/show_bug.cgi?id=54433

        Use n/p to navigate the comments.
        Enter to begin editing a comment.
        Escape to finish editing a comment.

        * code-review.js:

2011-02-14  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        improve line selection in the code review tool
        https://bugs.webkit.org/show_bug.cgi?id=54430

        -shift+click now extends the comment context
        -selecting outside of a diff section no longer clears the selected lines.
         Instead it just restricts the selected lines to that diff section.

        * code-review.js:

2011-02-10  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        remove extra space from expansion lines
        https://bugs.webkit.org/show_bug.cgi?id=54266

        * code-review.js:

2011-02-09  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        only erase draft comments after publish is successful
        https://bugs.webkit.org/show_bug.cgi?id=54163

        If there is a conflict or 500, then draft comments will survive.
        One drawback here is that the form post is now to the iframe,
        so to break out of the iframe we redirect to the bug page, which
        loses the information of who the email was sent to.

        Once WebKit supports seamless iframes we should be able to avoid
        the redirect.

        * code-review.js:

2011-02-09  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        save overall comments when saving drafts in the review tool
        https://bugs.webkit.org/show_bug.cgi?id=54165

        -save overall comments in localstorage as well
        -save all draft comments as you type
        -give a *subtle* indicator of saved state

        The latter should also make it super easy if someone wanted to do
        the work to store draft comments in appengine/s3/bugzilla/etc.

        * PrettyPatch/PrettyPatch.rb:
        * code-review-test.html:
        * code-review.js:

2011-02-08  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        fix toolbar anchoring in the code review tool
        https://bugs.webkit.org/show_bug.cgi?id=54058

        Avoid the anchoring cycle of doom when on the cusp
        of whether the toolbar needs to be anchored and
        speculatively avoid the Firefox crash when resizing.

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2011-02-07  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        bring back diff context lines into the review tool
        https://bugs.webkit.org/show_bug.cgi?id=53974

        * code-review.js:

2011-02-01  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Roben.

        include svn revisions in git diffs for the code review tool to use
        https://bugs.webkit.org/show_bug.cgi?id=53569

        * PrettyPatch/PrettyPatch.rb:

2011-02-01  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        make draft comments focusable
        https://bugs.webkit.org/show_bug.cgi?id=53554

        Makes frozen draft comments focusable. The ones that are currently being edited are not.
        I'm on the fence whether they should be, but this seems good enough for now.

        * code-review.js:

2011-02-01  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        avoid jitter when loading the comments to a patch
        https://bugs.webkit.org/show_bug.cgi?id=53570

        * code-review.js:

2011-02-01  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Mihai Parparita.

        [codereviewtool] extra space at the beginning of lines in side-by-side view
        https://bugs.webkit.org/show_bug.cgi?id=53550

        The newline between the spans turns into user-visible space in side-by-side mode.

        * PrettyPatch/PrettyPatch.rb:

2011-02-01  Ojan Vafai  <ojan@chromium.org>

        Increment version number to cache-bust code-review.js.

        * PrettyPatch/PrettyPatch.rb:

2011-01-31  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        Store draft comments in localStorage
        https://bugs.webkit.org/show_bug.cgi?id=52866

        * code-review.js:
        * code-review-test.html

2011-01-20  Ojan Vafai  <ojan@chromium.org>

        Fix the review tool for image diffs. We would get a javascript error
        because image diffs don't have line numbers.

        * code-review.js:

2011-01-20  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Oliver Hunt.

        Could review tool include style failure info?
        https://bugs.webkit.org/show_bug.cgi?id=49049

        This does not handle patches that have old paths (e.g. without the Source prefix).
        Although that would be fairly straightforward to workaround.

        * code-review.js:

2011-01-20  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        handle cases where PrettyPatch.rb doesn't linkify filenames
        https://bugs.webkit.org/show_bug.cgi?id=52834

        * code-review.js:

2011-01-20  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        fix goofup in http://trac.webkit.org/changeset/76082
        https://bugs.webkit.org/show_bug.cgi?id=52830

        We were showing the revision number of the patch at the bottom
        of the diff and expanding from the bottom of the diff would fail.

        Also, removed an unused variable and scoped queries appropriatly
        to the file_diff they should have been operating on.

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2011-01-19  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        [reviewtool] Add a link for annotated trac page on review page
        https://bugs.webkit.org/show_bug.cgi?id=52747

        -add line numbers to all trac links to the first line in the file diff
        -add annotate/review log links
        -make file-diff links other than the file name only show when you mouseover the filediff
        -fix white-space to only wrap the .text element and it's childen, any of it's siblings/parents

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2011-01-14  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        make line selection have a extend only from where you start the selection in the code review tool
        https://bugs.webkit.org/show_bug.cgi?id=52485

        * code-review.js:

2011-01-18  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Eric Seidel.

        make file expansion use the file at the svn revision the diff was created at
        https://bugs.webkit.org/show_bug.cgi?id=52650

        This only works for patches created with SVN for now since the git
        diff does not include SVN revision numbers in it.

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2011-01-15  Adam Barth  <abarth@webkit.org>

        Rubber-stamped by Eric Seidel.

        Move WebKit2 into Source
        https://bugs.webkit.org/show_bug.cgi?id=52438

        Remove WebKit2 from the list of top-level source directories.

        * PrettyPatch/PrettyPatch.rb:

2011-01-14  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        fix expanded lines in the code review tool
        https://bugs.webkit.org/show_bug.cgi?id=52498

        Fixes them to work now that we have wrapper divs.
        Also fixes the long-standing bug that the line numbers
        were incorrect sometimes.

        * code-review.js:

2011-01-14  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        put remove lines to the left of add lines in sidebyside view
        https://bugs.webkit.org/show_bug.cgi?id=52458

        Also, sneaking in a fix to make long lines with no whitespace wrap.

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2011-01-14  Ojan Vafai  <ojan@chromium.org>

        Fix bad merge in r75816.

        * code-review.js:

2011-01-14  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        improve line selection with fast drags
        https://bugs.webkit.org/show_bug.cgi?id=52477

        * code-review.js:

2011-01-14  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        tweak line selection in code review tool
        https://bugs.webkit.org/show_bug.cgi?id=52462

        -Improve handling of data-comment-base-line code to deal with
        lines that have multiple values.
        -Make it so that if you click on the line immediately above
        a line that has a comment it will add a new comment instead of
        adding lines to the following comment. If the last selected line
        overlaps existing comment lines though they will still get
        added to the existing comment.

        * code-review.js:

2011-01-14  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Roben.

        fix bugs going back and forth between unified and sidebyside
        https://bugs.webkit.org/show_bug.cgi?id=52470

        Now that we're appending DOM nodes directly, we only want to
        get the first ".text" element in the subtree. In the cases
        where there are multiple, their contents are the same.

        Also, when making side-by-side expansion lines, we need to
        clone the contents so we have a second copy to append to the DOM.

        * code-review.js:

2011-01-13  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        simplify keyboard handling in code review tool
        https://bugs.webkit.org/show_bug.cgi?id=52407

        Now that we have DiffBlock containers, the only things that are
        focusable are previousComment nodes and DiffBlock containers
        that contain add/remove lines.

        Also, this means we show the focus border around the entire diff
        instead of just the first line.

        * code-review.js:

2011-01-13  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        add container divs for diff blocks
        https://bugs.webkit.org/show_bug.cgi?id=52400

        This will help simplify a lot of code in code-review.js
        and make side-by-side diffs better (i.e. put removed lines
        to the left of corresponding added lines).

        Also, allow for running the JS from a local file. Now you can modify code-review.js
        to point to a local file and then run:
        ruby prettify.rb < foo.diff > foo.html

        foo.html will load a dummy code review matching foo.diff.

        Before structure:
        Line
        Line remove
        Line add
        Line add
        Line

        After structure:
        DiffBlock
          DiffBlockPart shared
            Line shared
        DiffBlock
          DiffBlockPart remove
            Line remove
          DiffBlockPart add
            Line add
            Line add
        DiffBlock
          DiffBlockPart shared
            Line shared

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2011-01-12  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Mihai Parparita.

        fix assorted bugs with expansion lines
        https://bugs.webkit.org/show_bug.cgi?id=52326

        -Clicking "all" would collapse whitespace in the expanded lines.
        -Converted the remaining line creation code to using the DOM.

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2011-01-12  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        review tool formatted diff doesn't match the uploaded diff
        https://bugs.webkit.org/show_bug.cgi?id=51960

        PrettyPatch works just fine if there is no newline at the end of the file.

        * attachment.cgi:

2011-01-12  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        Bugzilla: Add keyboard shortcuts to jump to next change
        https://bugs.webkit.org/show_bug.cgi?id=52305

        Comments and diff blocks go in the same queue. If you have a 
        comment focused, then j/k will focus the next/prev diff block
        with respect to that comment.

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2011-01-12  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        show shared lines on both sides in code review tool
        https://bugs.webkit.org/show_bug.cgi?id=52308

        We were appending the same DOM node twice. Instead, make
        the from column a clone of the original node.

        * code-review.js:

2011-01-12  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        fix wrapping bug in expansion lines in the code review tool
        https://bugs.webkit.org/show_bug.cgi?id=52270

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2011-01-11  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        fix difflink centering to be vertical, not horizontal
        https://bugs.webkit.org/show_bug.cgi?id=52263

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2011-01-11  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        remember diffstate for review tool
        https://bugs.webkit.org/show_bug.cgi?id=52253

        If you use the global sidebyside/unified links, store the diff type
        in localstorage. Then, onload, use that diff type. That way, people
        who prefer one diff type or the other can always get that by default.

        * code-review.js:

2011-01-11  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        allow sidebysideifying individual files in the code review tool
        https://bugs.webkit.org/show_bug.cgi?id=52226

        * code-review.js:

2011-01-11  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Mihai Parparita.

        fix exception when adding a comment to a side-by-side diff
        https://bugs.webkit.org/show_bug.cgi?id=52240

        prev() and next() won't get the previous and next lines in
        side-by-side mode. Instead do a query to find them.

        * code-review.js:

2011-01-11  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Mihai Parparita.

        maintain word diffs when converting to side-by-side and back
        https://bugs.webkit.org/show_bug.cgi?id=52244

        Using textContent would lose the spans use to make the word-diff highlighting.
        Just move the span element itself.

        * code-review.js:

2011-01-11  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        fix layout error with comments in code review tool
        https://bugs.webkit.org/show_bug.cgi?id=52230

        * PrettyPatch/PrettyPatch.rb:

2011-01-10  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        convert back to unified from sidebyside diff
        https://bugs.webkit.org/show_bug.cgi?id=52180

        Remove url fragment stuff. Having it be per-filediff is too complicated.

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2011-01-07  Adam Barth  <abarth@webkit.org>

        Rubber-stamped by Eric Seidel.

        Move WebCore to Source
        https://bugs.webkit.org/show_bug.cgi?id=52050

        Remove reference to old directory.

        * PrettyPatch/PrettyPatch.rb:

2011-01-06  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        side-by-side diffs in the code review tool
        https://bugs.webkit.org/show_bug.cgi?id=52019

        Support for conversion from the formatted diff to a side-by-side diff.
        Maintains comments and new comments can be added.

        The main architectural change is that Line elements are no longer necessarily
        siblings. Each physical line is now in a LineContainer and LineContainers are
        siblings. Each Line corresponds to a Line in the unified diff and has an id (e.g. line12).
        A Line can be a LineContainer or a child of a LineContainer.

        In this way, converting to side-by-side and, in the future, back to unified is non-lossy.

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2011-01-06  Ojan Vafai  <ojan@chromium.org>

        Fix line context when replying to comments.

        * code-review.js:

2011-01-05  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        change the way we do comment highlighting in the code review tool
        https://bugs.webkit.org/show_bug.cgi?id=51971

        Store a space-separated list of base line IDs on each line that has
        comments associated with that line. This allows for overlapping comments,
        but more importantly, makes adding side-by-side diff support easier.

        * code-review.js:

2011-01-05  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        minor code cleanup for code review tool
        https://bugs.webkit.org/show_bug.cgi?id=51962

        Consolidates some queries to using shared functions.

        * code-review.js:

2011-01-05  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        assorted cleanups to prepare for side-by-side diffing
        https://bugs.webkit.org/show_bug.cgi?id=51961

        Mostly, use selector queries instead of assuming comments are next siblings.

        * code-review.js:

2011-01-05  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        fix message container selector for code review tool
        https://bugs.webkit.org/show_bug.cgi?id=51959

        * code-review.js:

2011-01-04  Ojan Vafai  <ojan@chromium.org>

        Increment version number to avoid getting the cached JS file.

        * PrettyPatch/PrettyPatch.rb:

2010-12-15  Ojan Vafai  <ojan@chromium.org>
 
        Reviewed by Adam Barth.

        anchor the toolbar to the bottom of the diff if the diff doesn't take a full screen of height
        https://bugs.webkit.org/show_bug.cgi?id=51162

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2011-01-01  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        Move JavaScriptCore to Source
        https://bugs.webkit.org/show_bug.cgi?id=51604

        * PrettyPatch/PrettyPatch.rb:
          - Remove reference to JavaScriptCore as a source directory.

2011-01-01  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        Move Sources to Source
        https://bugs.webkit.org/show_bug.cgi?id=51794

        * PrettyPatch/PrettyPatch.rb:

2010-12-31  Adam Barth  <abarth@webkit.org>

        Rubber-stamped by Eric Seidel.

        Move PageLoadTests to PerformanceTests/PageLoad
        https://bugs.webkit.org/show_bug.cgi?id=51771

        Update list of top-level open-source directories.

        * PrettyPatch/PrettyPatch.rb:

2010-12-31  Adam Barth  <abarth@webkit.org>

        Rubber-stamped by Eric Seidel.

        Move SunSpider into PerformanceTests
        https://bugs.webkit.org/show_bug.cgi?id=51769

        Update list of top-level open-source directories.

        * PrettyPatch/PrettyPatch.rb:

2010-12-26  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        Move autotools into Sources
        https://bugs.webkit.org/show_bug.cgi?id=51630

        * PrettyPatch/PrettyPatch.rb:
          - Remove reference to non-existant autotools directory.

2010-12-26  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        Move cmake into Sources
        https://bugs.webkit.org/show_bug.cgi?id=51631

        * PrettyPatch/PrettyPatch.rb:

2010-12-23  Adam Barth  <abarth@webkit.org>

        Rubber-stamped by Eric Seidel.

        Move JavaScriptGlue into Sources
        https://bugs.webkit.org/show_bug.cgi?id=51583

        PrettyPatch keeps a list of the top-level directories that exist in
        trac.

        * PrettyPatch/PrettyPatch.rb:

2010-12-20  Adam Barth  <abarth@webkit.org>

        One more tweak caused by moving the web sites around.  I had this
        change in my patch originally, but I missed it because I had to use
        server-side svn move commands to move the bulk of the web site files.

        * PrettyPatch/PrettyPatch.rb:

2010-12-18  Adam Barth  <abarth@webkit.org>

        Reviewed by Sam Weinig.

        Move WebKitExamplePlugins to Examples
        https://bugs.webkit.org/show_bug.cgi?id=51291

        * PrettyPatch/PrettyPatch.rb:

2010-12-17  Dan Bernstein  <mitz@apple.com>

        Reviewed by Simon Fraser.

        Rename WebKitTools to Tools
        https://bugs.webkit.org/show_bug.cgi?id=49861

        * PrettyPatch/PrettyPatch.rb:
        * committers-autocomplete.js:

2010-12-17  Ojan Vafai  <ojan@chromium.org>

        Increment psuedo-version number to avoid pulling cached version.

        * PrettyPatch/PrettyPatch.rb:

2010-12-17  Ojan Vafai  <ojan@chromium.org>

        Speculative fix for the code review tool in Firefox.
        Fixes a JS error and makes the status bubble mostly work
        if postMessage is not supported.

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2010-12-15  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        size status bubble to it's contents on the code review page
        https://bugs.webkit.org/show_bug.cgi?id=51142

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2010-12-15  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        fix goofups from r74142 and r74130
        https://bugs.webkit.org/show_bug.cgi?id=51146

        Accidentally shrank the inline comment boxes and made
        the toolbar not show up when there were image diffs.

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2010-12-14  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        add ability to view for file context to the review tool
        https://bugs.webkit.org/show_bug.cgi?id=51057

        At the beginning/end of each file diff and between each
        hunk add links to expand the context. For now it grabs the
        tip of tree version of the file and tries to apply the diff 
        to that file. If it can't apply, then it gives up as we
        wouldn't want to show the wrong lines of context.

        In the future, we can consider adding the upload svn revision
        to the diff itself, then we could fallback to the file at that
        revision if tip of tree doesn't apply.

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2010-12-08  Ojan Vafai  <ojan@chromium.org>

        Reviewed by Adam Barth.

        [reviewtool] should always show overall comments text box
        https://bugs.webkit.org/show_bug.cgi?id=45870

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2010-12-04  Patrick Gansterer  <paroga@webkit.org>

        Reviewed by Adam Barth.

        Increase size of status bubbles
        https://bugs.webkit.org/show_bug.cgi?id=50496

        The current available space isn't enough to display all
        pending results including position in the queue.

        * PrettyPatch/PrettyPatch.rb:

2010-12-04  Patrick Gansterer  <paroga@webkit.org>

        Reviewed by Adam Barth.

        Increase size of status bubbles
        https://bugs.webkit.org/show_bug.cgi?id=50496

        The current available space isn't enough to display all
        pending results including position in the queue.

        * template/en/custom/attachment/edit.html.tmpl:
        * template/en/custom/attachment/list.html.tmpl:
        * template/en/custom/attachment/reviewform.html.tmpl:

2010-11-08  Adam Barth  <abarth@webkit.org>

        Update help text to match behavior change.

        * code-review.js:

2010-11-08  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        Restore normal meaning of double-click on patch review page?
        https://bugs.webkit.org/show_bug.cgi?id=47641

        After this patch, you need to click on the line numbers to add a
        comment.

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2010-10-09  Adam Barth  <abarth@webkit.org>

        Reviewed by Alexey Proskuryakov.

        Exception in committers-autocomplete in Firefox
        https://bugs.webkit.org/show_bug.cgi?id=47456

        Remove dependency on a WebKit-only quirk.  IMHO, this quirk is bad for
        the long-term health of the web, but that's a discussion for another
        patch.

        * committers-autocomplete.js:

2010-10-08  Adam Barth  <abarth@webkit.org>

        Reviewed by Oliver Hunt.

        Bugmail for new attachments should link to the reviewtool
        https://bugs.webkit.org/show_bug.cgi?id=47440

        As requested by olliej himself.  This patch was constructed by pure
        reason.  I have no way to actually run this code.

        * Bugzilla/BugMail.pm:

2010-09-28  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>

        Reviewed by Csaba Osztrogonác.

        Convert verbatim unicode values in comitter names to characters

        * committers-autocomplete.js:

2010-09-24  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>

        Reviewed by Csaba Osztrogonác.

        Support Unicode-strings in committers-autocomplete script

        * committers-autocomplete.js:

2010-09-22  Adam Barth  <abarth@webkit.org>

        Reviewed by John Sullivan.

        New review-page design doesn't include name of reviewer
        https://bugs.webkit.org/show_bug.cgi?id=46271

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2010-09-22  Adam Barth  <abarth@webkit.org>

        Fix typo in CSS.

        * PrettyPatch/PrettyPatch.rb:

2010-09-22  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        Add link to bug to review page
        https://bugs.webkit.org/show_bug.cgi?id=46192

        To make room for the link, I moved the help text to the top of the page
        and tweaked the language to help folks discover that you can select
        context using the line numbers.

        Also, move more text to sans-serif since that fits in better with the
        pretty-patch fonts.

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2010-09-21  Adam Barth  <abarth@webkit.org>

        Unreviewed.

        [reviewtool] Publish button doesn't work
        https://bugs.webkit.org/show_bug.cgi?id=46168

        Darin's recent patch had a runtime error.  Sadly, we don't have any
        testing for this code.

        * code-review.js:

2010-09-20  Darin Adler  <darin@apple.com>

        Reviewed by Adam Barth.

        Add Preview button and link to bug to patch review bar
        https://bugs.webkit.org/show_bug.cgi?id=46153

        * PrettyPatch/PrettyPatch.rb: Bump version number to make caches happy.
        * code-review.js: Added Preview button and link to bug.

2010-09-19  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        [reviewtool] Publish button should actually publish the review comments
        https://bugs.webkit.org/show_bug.cgi?id=46074

        Instead of showing the confirmation lightbox, the Publish button now
        publishes the comments directly.  If there's demand for a "Preview"
        button, we can find a way to add that feature.

        * code-review.js:

2010-09-19  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        Move reviewtool to action=review
        https://bugs.webkit.org/show_bug.cgi?id=46071

        This patch removes the old Review Patch screen and moves the new
        reviewtool from Pretty Diff to Review Patch.

        * attachment.cgi:
        * code-review.js:

2010-09-19  Adam Barth  <abarth@webkit.org>

        Review tool UI tweak.  This patch lengthens the status bubbles so all
        the bubble fit (even when they have numbers inside).

        * PrettyPatch/PrettyPatch.rb:

2010-09-19  Dan Bernstein  <mitz@apple.com>

        Reviewed by Anders Carlsson.

        Fixed a typo.

        * code-review.js: Changed the label of the OK button from Ok to OK.

2010-09-15  Adam Barth  <abarth@webkit.org>

        Unreviewed.

        Only show the review-in-context link if there are contextual comments.

        * code-review.js:

2010-09-15  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        [reviewtool] Show the status bubbles on the toolbar
        https://bugs.webkit.org/show_bug.cgi?id=45861

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2010-09-15  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        [reviewtool] Allow setting review and commit-queue flags from main review screen
        https://bugs.webkit.org/show_bug.cgi?id=45860

        This patch adds drop down menus for adjusting the review and
        commit-queue flags from the main review screen.  These controls don't
        appear immediately because we need to read the state of the flags off
        the details page.

        It's a slight sadness that bugzilla doesn't have a clean way of
        identifying which select control is associated with a given flag.  The
        flags seem to have some sort of id, but it's unclear to me how to map
        that id back to a notion of "review" or "commit-queue".  Instead, we
        look for some magic strings in the title.  I'm sure this will come back
        to bit us at some point, but I'm not sure what to do that's better.
        (The webkitpy solution to this problem is to assume that the flags are
        in a given order, but this seems better.)

        * PrettyPatch/PrettyPatch.rb:
            - Bump version number to bust throuh caches.
        * code-review.js:

2010-09-15  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        [reviewtool] Comments should quote previous comments on the same line
        https://bugs.webkit.org/show_bug.cgi?id=45847

        Now when you reply to a previous comment, the tool will quote the
        previous comment in the bugs.webkit.org post.  This makes it eaiser for
        folks following along in email to understand the discussion.

        While I was editing this code, I also cleaned up some of the whitespace
        handling in comments.

        * code-review.js:

2010-09-15  Adam Barth  <abarth@webkit.org>

        Minor UI tweak to the review tool.  We want to display newlines in
        previous and frozen comments instead of collapsing them.

        * PrettyPatch/PrettyPatch.rb:

2010-09-14  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        bugs.webkit.org should autocomplete WebKit Committers and Reviewers
        https://bugs.webkit.org/show_bug.cgi?id=45799

        This patch implements an autocomplete dropdown that helps users type
        the names of WebKit committers and reviewers.  The script grabs the
        data from SVN now that wms set up CORS for http://svn.webkit.org.
        Security technology for the win.

        This script is based on (well, essentially copied from) the popular
        autocomplete extension:

        https://chrome.google.com/extensions/detail/olaabhcgdogcbcoiolomlcodkngnemfb

        I asked Ojan, and said he was fine licensing the code under the BSD
        license.  I'm not sure how the patch interacts with the extension, but
        we can retire the extension if they interact poorly.

        * committers-autocomplete.js: Added.
        * template/en/default/global/footer.html.tmpl:
            - Add the script to every page on bugs.webkit.org

2010-09-14  Adam Barth  <abarth@webkit.org>

        Add a license block to the reviewtool.  I should have added this from
        the start.  According to the SVN log, I'm the only one to have ever
        touched this file.

        * code-review.js:

2010-09-07  Adam Barth  <abarth@webkit.org>

        Minor tweaks to the reviewtool UI.

        Rename Cancel to Discard to make it more clear what the button does.
        Also, move the style declaration for the focus ring later in the sheet
        so it works.

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2010-09-06  Adam Barth  <abarth@webkit.org>

        Small UI tweak to the reviewtool.  Make the Ok/Cancel buttons a bit
        bigger.

        * PrettyPatch/PrettyPatch.rb:

2010-09-06  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        [reviewtool] Add a quick animation for opening/closing comment boxes
        https://bugs.webkit.org/show_bug.cgi?id=45278

        The 200ms animation slides in and out the line-by-line comment box.

        * code-review.js:

2010-09-06  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        [reviewtool] Add a field for overall comments
        https://bugs.webkit.org/show_bug.cgi?id=45273

        This patch does a couple logically separate things that could be
        separated into smaller patches:

        1) This patch adds an "overall comments" field where you can enter
           overall comments about the patch.  These comments appear at the top
           of the bugzilla posting.  Currently, these aren't redisplayed when
           viewing the patch, but I plan to add that in a future patch.

        2) This patch renames some of the CSS classes to more consistently
           follow the camelCase style that PrettyPatch uses.

        3) This patch moves the "prepare comments" button to the left of the
           toolbar and renames is to "publish comments".  This makes more sense
           when you scroll to the bottom of the page and enter in some overall
           comments.

        4) When you attempt to add a comment to a line that already has a
           "frozen" comment, we now unfreeze the comment instead of doing
           nothing.  The old behavior was kind of frustrating if you didn't
           know that you could unfreeze a comment by clicking on it.

        * PrettyPatch/PrettyPatch.rb:
            - Update CSS.
        * code-review.js:

2010-09-06  Adam Barth  <abarth@webkit.org>

        [reviewtool] Tweak the ok button to cancel the comment if the comment
        is empty.  Previously we would get into a bad state where a line had a
        comment but there was no longer any way to access it.

        * code-review.js:

2010-09-06  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        [reviewtool] Add an "ok" button that collapses review comments
        https://bugs.webkit.org/show_bug.cgi?id=45255

        Many folks (including myself) are too trigger-happy with the "delete"
        button that we end up deleting perfectly good review comments.  This
        patch adds an "ok" button to absorb these clicks (and renames "delete"
        to "cancel").  When you click the ok button, the comment becomes
        non-editable and the box shrinks to fit the text.  You can click the
        text to get back to the editable version.

        * code-review.js:

2010-08-31  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        [reviewtool] Make it easy to scroll through review comments
        https://bugs.webkit.org/show_bug.cgi?id=45002

        This patch lets you scroll through review comments using "n" (for next)
        and "p" (for previous).  It also attributes comments to their authors.

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2010-08-31  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        [reviewtool] Show previous comments inline in diff
        https://bugs.webkit.org/show_bug.cgi?id=44977

        This patch adds basic support for showing previous comments inline in
        the diff.  We crawl the bugs.webkit.org comments about this attachment
        and extract comments related to specific lines.  We then show the
        comments inline in the diff.

        This part of the tool needs a bunch of polish, but this at least is a
        starting point for further work.

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2010-08-31  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        [reviewtool] Allow reviewer to select lines of context by dragging over the line numbers
        https://bugs.webkit.org/show_bug.cgi?id=44936

        * PrettyPatch/PrettyPatch.rb:
            - Add a version number to bust through bugs.webkit.org's aggressive
              cacheing.
        * code-review.js:

2010-08-30  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        [review tool] Let reviewer select how much context to show in snippet
        https://bugs.webkit.org/show_bug.cgi?id=44905

        We now highlight the context for a comment in yellow on the left (where
        the line numbers are).  Clicking a line number expands or contracts the
        amount of context, as appropriate.  Informal user testing indicates
        that we might want to support drag as well.

        This patch also changes the "open a comment box here" action to
        double-click to avoid issues with mis-clicks.

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js:

2010-08-29  Adam Barth  <abarth@webkit.org>

        Attempt to make Sam's life easier by not opening a comment text field
        if there's a selection.  This should make it easier to copy/paste text
        out of the diff without accidentally opening comment boxes.

        * code-review.js:

2010-08-29  Adam Barth  <abarth@webkit.org>

        Turns out we're supposed to use find instead of children here.

        * code-review.js:

2010-08-29  Adam Barth  <abarth@webkit.org>

        Reviewed by Eric Seidel.

        Awesomify pretty-diff based review tool
        https://bugs.webkit.org/show_bug.cgi?id=44835

        This patch replaces the existing inline comment feature with a new
        implementation.  Hopefully the new implementation is more awesome.
        It's not 100% done yet, but I'd like to get this version out there to
        see how it works.

        Unlike the previous version this version works with the "Formatted
        Diff" link instead of the "Review Patch" link.  Hopefully that will
        avoid interfering with folks who like the old style review.

        * PrettyPatch/PrettyPatch.rb:
        * code-review.js: Added.
        * prototype.js: Removed.

2010-08-19  Tony Chang  <tony@chromium.org>

        Reviewed by Adam Barth.

        webkit-patch barfed on upload with a new image test result
        https://bugs.webkit.org/show_bug.cgi?id=39097

        * PrettyPatch/PrettyPatch.rb: don't use full path to git

2010-08-19  Tony Chang  <tony@chromium.org>

        Unreviewed, setting svn:eol-style native on ChangeLog.

2010-08-19  Tony Chang  <tony@chromium.org>

        Unreviewed.  Just removing \r's from ChangeLog.

2010-08-02  Adam Roben  <aroben@apple.com>

        Tell the patch prettifier about some (not so) new directories

        * PrettyPatch/PrettyPatch.rb: Added WebKit2, autotools, and cmake
        directories.

2010-07-27  Joseph Pecoraro  <joepeck@webkit.org>

        Reviewed by David Kilzer.

        Provide a Helpful Link for Web Inspector Bugs in Bugzilla
        https://bugs.webkit.org/show_bug.cgi?id=43065

        * template/en/custom/global/choose-product.html.tmpl: Added. Explicitly added a link for the Web Inspector.

2010-06-09  Julie Parent  <jparent@chromium.org>

        Reviewed by David Kilzer.

        Bugzilla: Don't send mail for cancel/deny/granted for in-rietveld.

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

        * Bugzilla/Flag.pm:

2010-05-17  Julie Parent  <jparent@chromium.org>

        Reviewed by Ojan Vafai.

        Rietveld review page should dedicate more space to Rietveld, less to high level comments form.

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

        * template/en/custom/attachment/reviewform.html.tmpl:
        Delete a random BR amongst the hidden elements that was causing extra whitespace.
        * template/en/custom/attachment/rietveldreview.html.tmpl:
        Increase size of Rietveld frame to 80%, from 60%.

2010-05-14  Julie Parent  <jparent@chromium.org>

        Reviewed by Ojan Vafai.

        Bugzilla: Only show "Rietveld Review" link when in-rietveld is set to +.
        
        https://bugs.webkit.org/show_bug.cgi?id=39141

        * template/en/custom/attachment/list.html.tmpl:

2010-05-13  Julie Parent  <jparent@chromium.org>

        Reviewed by David Kilzer.

        Bugzilla: Don't send mail if the only change is to the in-rietveld flag.
        
        https://bugs.webkit.org/show_bug.cgi?id=39090

        * Bugzilla/BugMail.pm:

2010-05-12  Julie Parent  <jparent@chromium.org>

        Reviewed by Ojan Vafai.

        Hide the in-rietveld flag in the UI.  It is only used only by tooling and shouldn't clutter the UI.
        https://bugs.webkit.org/show_bug.cgi?id=39024

        * template/en/custom/attachment/list.html.tmpl:
          Removes this flag entirely from the UI, not needed on this page.
        * template/en/custom/flag/list.html.tmpl: Added.
          Copied from template/en/default/flag/list.html.tmpl with only changes inside the if WEBKIT_CHANGES section.
          Hides the flag rather than removing it completely, so tools can still interact with it.  

2010-05-12  Julie Parent  <jparent@chromium.org>

        Reviewed by David Kilzer.

        Adds support for Rietveld reviews.  When there is an associated
        Rietveld id for a patch, adds a link to do a Rietveld review instead.

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

        * attachment.cgi:
            Added support for handling action=rietveldreview.
        * template/en/custom/attachment/list.html.tmpl:
            Adds a link to use rietveld review iff the in_rietveld flag is set.
        * template/en/custom/attachment/reviewform.html.tmpl:
            Detects if we are in rietveld review mode due to query string paramter,
            and customizes the review form slightly:
                - Changes text describing comment field.
                - Comment field does not include quoted patch.
                - Submit button fetches from Rietveld instead of just submitting.
        * template/en/custom/attachment/rietveldreview.html.tmpl: Added.
            New template for rietveldreview mode.  Hosts the rietveld frame in the
            top and the regular comments form in the bottom.
            Uses postMessage to communicate with Rietveld frame.

2010-05-08  Chris Jerdonek  <cjerdonek@webkit.org>

        Reviewed by Maciej Stachowiak.

        Allow long comment lines to wrap to the window width instead
        of to 80 characters.

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

        * Bugzilla/Constants.pm:
          - Introduced a new constant COMMENT_COLS_WRAP to replace COMMENT_COLS
            inside the wrap_comment() subroutine.  The new constant effectively
            disables text wrapping by increasing the value used in wrap_comment()
            from 80 characters to a very large value (8000).
        * Bugzilla/Util.pm:
          - Replaced COMMENT_COLS with COMMENT_COLS_WRAP inside wrap_comment().
        * skins/custom/global.css:
        (.bz_comment_text):
          - Eliminate the width styling on comments to allow long lines
            to wrap at the window width.
        (.bz_comment_text > span.quote):
          - Inherit the "white-space" property.  This prevents long quoted
            lines in comments from causing non-quoted lines to extend beyond
            the window width.

2010-04-22  Adam Barth  <abarth@webkit.org>

        Reviewed by Darin Adler.

        The new review tools shouldn't clear the comment box automatically
        https://bugs.webkit.org/show_bug.cgi?id=38004

        Instead, we now have a button for doing that explicitly.  If people
        like this tool, we can look at fancier solutions.

        Also, tried to make the tool work on the edit page as well as the review page.

        * PrettyPatch/PrettyPatch.rb:

2010-04-22  Adam Barth  <abarth@webkit.org>

        Unreviewed.  Turns out we need to do more escaping because Ruby was
        explanding our newlines, creating a syntax error.

        * PrettyPatch/PrettyPatch.rb:

2010-04-22  Adam Barth  <abarth@webkit.org>

        Reviewed by Darin Adler.

        Hack up PrettyDiff to allow line-by-line comments
        https://bugs.webkit.org/show_bug.cgi?id=37886

        Admittedly a bit of a hack, this is a basic line-by-line editor we can
        play with thanks to Andrew Scherkus.  It's meant to integrate with the
        "review" page at bugs.webkit.org.

        I changed a few things from Andrew's original version:
        1) Trigger text boxes on single click to make iPhone/iPad reviewing
        easier.
        2) Clear the main text box on load.
        3) Reference a version of prototype.js on bugs.webkit.org.

        * PrettyPatch/PrettyPatch.rb:
        * prototype.js: Added.

2010-02-22  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>

        Reviewed by Maciej Stachowiak.

        Don't reset the assignee back to default on component change

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

        There's a risk of reseting a valid assignee for example when
        triaging a bug. All components in WebKit have the default 
        assignee set to webkit-unassigned@webkit.org so this should
        not cause problems for people relying on this functionality.

        * template/en/custom/bug/edit.html.tmpl:

2010-01-22  Janusz Lewandowski  <lew21@xtreeme.org>

        Reviewed by Maciej Stachowiak.

        run-webkit-tests fails on Ruby 1.9
        https://bugs.webkit.org/show_bug.cgi?id=33554
        inject does not work with strings any more, so BugsSite/PrettyPatch/PrettyPatch.rb prints lots of errors.

        * PrettyPatch/PrettyPatch.rb:

2010-01-20  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>

        Reviewed by Adam Barth.

        Adjust height of status-bubbles to prevent them being cut.

        * template/en/custom/attachment/edit.html.tmpl:
        * template/en/custom/attachment/list.html.tmpl:
        * template/en/custom/attachment/reviewform.html.tmpl:

2010-01-08  David Kilzer  <ddkilzer@apple.com>

        <http://webkit.org/b/33410> Fix "View Plain Diff"/"View Formatted Diff" button

        Reviewed by Adam Barth.

        This button was broken during a previous Bugzilla upgrade after
        changes were made to the names of objects exposed on templates.

        * template/en/custom/attachment/reviewform.html.tmpl: Changed
        attachid to attachment.id and ispatch to attachment.ispatch.
        Also tweaked the format to use 4 table columns instead of 5.

2010-01-08  David Kilzer  <ddkilzer@apple.com>

        Included UNCONFIRMED bugs by default in advanced search query

        Rubber-stamped by Alexey Proskuryakov.

        * data/params: Prepended 'bug_status=UNCONFIRMED&' to
        'defaultquery' parameter.

2010-01-08  David Kilzer  <ddkilzer@apple.com>

        FIX: Make patch status appear on reviewform.html.tmpl

        * template/en/custom/attachment/reviewform.html.tmpl: Check
        attachment.ispatch (not just ispatch) when deciding whether
        to display patch status.  Also update layout a bit.

2010-01-08  David Kilzer  <ddkilzer@apple.com>

        Update data/params parameters

        * data/params: Updated 'timezone' to turn off DST.  Updated
        'usebugaliases' and 'usevotes' to turn them off.

2010-01-08  Adam Barth  <abarth@webkit.org>

        Reviewed by Darin Adler.

        Show patch status in bugs.webkit.org
        https://bugs.webkit.org/show_bug.cgi?id=33368

        This patch adds an iframe to the show_bug page and the edit attachment
        page that displays whether the attachment passed the various bots.

        * template/en/custom/attachment/edit.html.tmpl:
        * template/en/custom/attachment/list.html.tmpl:
        * template/en/custom/attachment/reviewform.html.tmpl:

2009-12-07  Shinichiro Hamaji  <hamaji@chromium.org>

        Reviewed by David Kilzer.

        Bugzilla should show images in git patches
        https://bugs.webkit.org/show_bug.cgi?id=31395

        Attempt to go r51748 again using --directory option of git-apply.

        * PrettyPatch/PrettyPatch.rb:

2009-12-06  Shinichiro Hamaji  <hamaji@chromium.org>

        Unreviewed. Revert r51748.

        Bugzilla should show images in git patches
        https://bugs.webkit.org/show_bug.cgi?id=31395

        * PrettyPatch/PrettyPatch.rb:

2009-12-06  Shinichiro Hamaji  <hamaji@chromium.org>

        Reviewed by David Kilzer.

        Bugzilla should show images in git patches
        https://bugs.webkit.org/show_bug.cgi?id=31395

        Show images in git patches using git-apply.

        * PrettyPatch/PrettyPatch.rb:

2009-10-23  Eric Seidel  <eric@webkit.org>

        Reviewed by Adam Roben.

        PrettyPatch should show images even when they have the wrong mime type
        https://bugs.webkit.org/show_bug.cgi?id=29506

        * PrettyPatch/PrettyPatch.rb:

2009-10-17  Alexey Proskuryakov  <ap@apple.com>

        Reviewed by Eric Carlson.

        https://bugs.webkit.org/show_bug.cgi?id=30470
        Make marking a bug as duplicate easier

        * js/field.js: (setResolutionToDuplicate): Focus the edit field, too.

2009-10-16  Alexey Proskuryakov  <ap@apple.com>

        Reviewed by Mark Rowe.

        https://bugs.webkit.org/show_bug.cgi?id=30470
        Make marking a bug as duplicate easier

        * js/field.js: (setResolutionToDuplicate): Show edit field right away, don't make the user
        click again.

2009-09-09  David Kilzer  <ddkilzer@apple.com>

        Update data/params parameters

        * data/params: Updated 'attachment_base' parameter for secure
        attachments.  Updated 'mybugstemplate' parameter to search for
        bugs in UNCONFIRMED, ASSIGNED and REOPENED status in addition to
        NEW status.

2009-08-11  David Kilzer  <ddkilzer@apple.com>

        Updated data/params parameter

        * data/params: Updated 'loginnetmask' parameter to allow users
        to choose whether their cookies are restricted to a single IP
        address or not.

2009-07-07  David Kilzer  <ddkilzer@apple.com>

        Updated BugsSite with local changes on server

        The new files were created by checksetup.pl during the upgrade
        to Bugzilla 3.2.3.  The rest are self-explanatory.

        * data: Added "bugzilla-update.xml" to svn:ignore.
        * data/attachments: Added "groups.*" to svn:ignore.
        * data/params: Updated for a few changed parameters.

        * lib/.htaccess: Added.
        * skins/contrib/Dusk/IE-fixes.css: Added.
        * skins/contrib/Dusk/admin.css: Added.
        * skins/contrib/Dusk/create_attachment.css: Added.
        * skins/contrib/Dusk/dependency-tree.css: Added.
        * skins/contrib/Dusk/duplicates.css: Added.
        * skins/contrib/Dusk/editusers.css: Added.
        * skins/contrib/Dusk/help.css: Added.
        * skins/contrib/Dusk/index.css: Added.
        * skins/contrib/Dusk/panel.css: Added.
        * skins/contrib/Dusk/params.css: Added.
        * skins/contrib/Dusk/release-notes.css: Added.
        * skins/contrib/Dusk/show_bug.css: Added.
        * skins/contrib/Dusk/show_multiple.css: Added.
        * skins/contrib/Dusk/summarize-time.css: Added.
        * skins/contrib/Dusk/voting.css: Added.
        * skins/contrib/Dusk/yui: Added.
        * skins/contrib/Dusk/yui/calendar.css: Added.
        * skins/custom/IE-fixes.css: Added.
        * skins/custom/admin.css: Added.
        * skins/custom/buglist.css: Added.
        * skins/custom/create_attachment.css: Added.
        * skins/custom/dependency-tree.css: Added.
        * skins/custom/duplicates.css: Added.
        * skins/custom/editusers.css: Added.
        * skins/custom/help.css: Added.
        * skins/custom/panel.css: Added.
        * skins/custom/params.css: Added.
        * skins/custom/release-notes.css: Added.
        * skins/custom/show_bug.css: Added.
        * skins/custom/show_multiple.css: Added.
        * skins/custom/summarize-time.css: Added.
        * skins/custom/voting.css: Added.
        * skins/custom/yui: Added.
        * skins/custom/yui/calendar.css: Added.

2009-07-03  David Kilzer  <ddkilzer@apple.com>

        Bug 26958: Change edit link to review link in request messages

        <https://bugs.webkit.org/show_bug.cgi?id=26958>

        Reviewed by Dan Bernstein.

        * template/en/custom/request/email.txt.tmpl: Copied from BugsSite/template/en/default/request/email.txt.tmpl.
        Changed link from "action=edit" to "action=review".

2009-07-03  David Kilzer  <ddkilzer@apple.com>

        Bug 26950: Make the summary and alias fields support click-to-edit
        <https://bugs.webkit.org/show_bug.cgi?id=26950>

        Reviewed by Maciej Stachowiak.

        Original patch by Maciej Stachowiak.

        * js/field.js:
        (hideEditableField): Updated to add click event listeners to the
        alias and short description elements to make them easier to
        edit.  Renamed field_id parameter to field2_id (short
        description id) and added a field1_id parameter (alias id).
        (showEditableField): If a third parameter is passed in the
        ContainerInputArray parameter, use it to find the element to
        focus.  Otherwise, fall back to the original behavior of
        focusing the first input field.
        (hideAliasAndSummary): Changed to pass the id for the alias
        element to hideEditableField().

2009-07-02  David D. Kilzer  <ddkilzer@apple.com>

        Config file for contrib/recode.pl when upgrading bugs.webkit.org

        Current as of midday on Wednesday, July 1, 2009.

        * contrib/recode-overrides.txt: Added.

2009-07-02  David D. Kilzer  <ddkilzer@apple.com>

        Workaround for WebKit Bug 9630 when running contrib/recode.pl

        A number of WebKit nightly builds included Bug 9630 which caused
        non-breaking space characters (0xA0) to be submitted within the
        content of textarea elements.

        * contrib/recode.pl: To work around these 0xA0 characters, try
        an encoding of cp1252 and use it if it works.

2009-07-02  David D. Kilzer  <ddkilzer@apple.com>

        Don't print "Failed to guess" warning if an override is available

        * contrib/recode.pl: Check that %overrides does NOT contain a
        key matching the current digest before printing out the warning
        about a failed charset guess.

2009-07-02  David D. Kilzer  <ddkilzer@apple.com>

        Added --[no-]truncate switch to contrib/recode.pl

        * contrib/recode.pl: Added --[no-]truncate switch to make
        debugging of failed charset guessing easier.  Often times the
        illegal character was truncated in the output.

2009-07-02  David D. Kilzer  <ddkilzer@apple.com>

        Changed Perl scripts to use #!/usr/bin/env perl

        perl -pi -e 's@#\!/usr/bin/perl@#\!/usr/bin/env perl@' *.cgi *.pl */*.pl

2009-07-02  David D. Kilzer  <ddkilzer@apple.com>

        Replace Bugzilla favicon with webkit.org favicon

        * favicon.ico: Removed.
        * images/favicon.ico: Replaced.  Copied from favicon.ico.

2009-07-02  David Kilzer  <ddkilzer@webkit.org>

        Merged BugsSite to Bugzilla-3.2.3

        Updated to the latest-and-greatest stable version.

2009-07-02  David Kilzer  <ddkilzer@webkit.org>

        Merged BugsSite to Bugzilla-3.0.3

        Nothing to see here.  Move along.

2009-06-09  Eric Seidel  <eric@webkit.org>

        Reviewed by Adam Roben.

        Add support for displaying added png files in PrettyPatch diffs
        https://bugs.webkit.org/show_bug.cgi?id=26210

        Currently this is SVN only (git-send-bugzilla patches exclude binary data)
        and only works for PNG files but could easily be made to work for other images as needed.

        * PrettyPatch/PrettyPatch.rb:

2009-05-19  Eric Seidel  <eric@webkit.org>

        Reviewed by Adam Roben.

        Make PrettyPatch understand quoted filenames in git diffs.
        https://bugs.webkit.org/show_bug.cgi?id=25881

        * PrettyPatch/PrettyPatch.rb:

2009-05-15  Simon Fraser  <simon.fraser@apple.com>

        Carrying forwards Darin Adler's rubber stamp
        
        Make the comment field wider too.

        * skins/custom/global.css:

2009-05-14  Simon Fraser  <simon.fraser@apple.com>

        Reviewed by Darin Adler
        
        Make the URL, Summary and Keyword fields wider to mitigate the
        effects of https://bugs.webkit.org/show_bug.cgi?id=25566 and make
        things generally better.

        * skins/custom/global.css:
        * template/en/custom/bug/edit.html.tmpl:

2008-11-10  Darin Adler  <darin@apple.com>

        - fix more of https://bugs.webkit.org/show_bug.cgi?id=21400
          "Edit" links for patches in comments, review queue, review emails
          should be replaced by "Review Patch" links

        * globals.pl: Fix cases that are automatically generated, such as links
        in comments in bugs.

        * template/en/custom/attachment/created.html.tmpl: Fix the link on the
        "I just created an attachment" page.

        * template/en/custom/request/queue.html.tmpl: Fix the link in the queue
        page.

2008-11-10  Darin Adler  <darin@apple.com>

        * template/en/default/request/queue.html.tmpl: Use review links instead
        of edit links in the review queue.

2008-11-10  Darin Adler  <darin@apple.com>

        * template/en/custom/request/email.txt.tmpl: Send review links instead
        of edit links when flags are set on a bug.

2008-10-27  Darin Adler  <darin@apple.com>

        * template/en/custom/attachment/reviewform.html.tmpl: Leave out the
        comment if it's untouched.

2008-10-23  Adam Roben  <aroben@apple.com>

        Fix Bug 21401: Comments field on "Review Patch" page should be
        initially filled with quoted patch

        <https://bugs.webkit.org/show_bug.cgi?id=21401>

        Reviewed by Dave Hyatt.

        * attachment.cgi:
        (edit): Retrieve the attachment data from the database instead of just
        its length. When the attachment is a patch, create a quotedpatch
        template variable that contains the patch data with each line
        prepended with "> ".
        * template/en/custom/attachment/reviewform.html.tmpl:
          - Changed the comments field to have a monospace font
          - Added an "Enter comments below:" caption above the comments field
            to make it clearer that this is where comments should go, now that
            the comments field is not initially empty
          - Fill the comments field with the quoted patch

2008-10-14  Adam Roben  <aroben@apple.com>

        Fix Bug 21602: Bugzilla times out trying to display formatted diff for
        attachment 24345
        
        https://bugs.webkit.org/show_bug.cgi?id=21602

        Reviewed by Dave Kilzer.

        * PrettyPatch/PrettyPatch.rb:
        (PrettyPatch.BINARY_FILE_MARKER_FORMAT): Added.
        (PrettyPatch.FileDiff.initialize): If any of the lines in the diff
        are a binary file marker, mark this FileDiff as binary and stop trying
        to process the lines.
        (PrettyDiff.FileDiff.to_html): If we're binary, just print a string
        saying so.

2008-10-02  Adam Roben  <aroben@apple.com>

        * template/en/custom/attachment/reviewform.html.tmpl: Fix typo.

2008-10-02  Adam Roben  <aroben@apple.com>

        * template/en/custom/attachment/review.html.tmpl: Fix URLs

2008-10-02  Adam Roben  <aroben@apple.com>

        Fix Bug 21315: bugs.webkit.org should have a nicer patch review
        interface

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

        Reviewed by Tim Hatcher.

        * attachment.cgi:
        (top level): Added support for the "review" and "reviewform" actions.
        (sub edit): Accept the template name as a parameter. If no name is
        give, use "edit" as before.
        * template/en/custom/attachment/list.html.tmpl: Added a "Review Patch"
        link for all patch attachments.
        * template/en/custom/attachment/review.html.tmpl: Added. Simple
        <frameset> page to show the patch on the top and a comment form on the
        bottom.
        * template/en/custom/attachment/reviewform.html.tmpl: Added. Simple
        comment form for reviewing patches.

2008-10-02  Adam Roben  <aroben@apple.com>

        Remove references to some backup files I created when implementing
        PrettyPatch in Bugzilla

        Reviewed by Tim Hatcher.

        * attachment-aroben.cgi: Removed.
        * template/en/default/attachment/edit-aroben.html.tmpl: Removed.

        * template/en/custom/attachment/edit.html.tmpl: Removed an erroneous
        reference to attachment-aroben.cgi. attachment.cgi will work just
        fine.

2008-06-25  David Kilzer  <ddkilzer@apple.com>

        Make PrettyPatch handle diffs with no Index or diff headers

        Part of Bug 19290: More patches not handled by PrettyPatch.rb
        <https://bugs.webkit.org/show_bug.cgi?id=19290>

        Reviewed by Adam.

        * PrettyPatch/PrettyPatch.rb:
        (PrettyPatch.DIFF_HEADER_FORMATS): Added regular expression to
        match on "+++ " lines for patches with no "Index" or "diff" header.
        (PrettyPatch.FileDiff.initialize): Look for filename on "+++ " line
        when the first line of a patch has no "Index" or "diff" header.
        (PrettyPatch.FileDiff.parse): Added haveSeenDiffHeader state
        variable to determine when no "Index" or "diff" header has been
        found, but a new patch has started with a "--- " line.

2008-06-08  Dan Bernstein  <mitz@apple.com>

        Reviewed by Adam Roben.

        - update trac URL in PrettyPatch

        * PrettyPatch/PrettyPatch.rb:

2008-05-29  Adam Roben  <aroben@apple.com>

        Update PrettyPatch directory list

        * PrettyPatch/PrettyPatch.rb:

2008-05-28  Adam Roben  <aroben@apple.com>

        Make PrettyPatch able to handle diffs taken from outside the WebKit
        source tree

        Part of Bug 19290: More patches not handled by PrettyPatch.rb
        <https://bugs.webkit.org/show_bug.cgi?id=19290>

        Reviewed by David Kilzer.

        * PrettyPatch/PrettyPatch.rb:
        (PrettyPatch.find_url_and_path): Added. Searches the file path from
        the bottom up looking for a directory that exists in the source tree.
        (PrettyPatch.linkifyFilename): Changed to call find_url_and_path.

2008-05-28  Adam Roben  <aroben@apple.com>

        Print exceptions from PrettyPatch to stdout

        This will make it much easier to debug problems with PrettyPatch,
        since we'll be able to see the exceptions in the browser.

        Reviewed by Sam Weinig.

        * PrettyPatch/prettify.rb: Added a --html-exceptions option, which
        will print exceptions to stdout as HTML.
        * attachment.cgi: Changed to pass --html-exceptions to prettify.rb.

2008-04-26  David Kilzer  <ddkilzer@apple.com>

        Removed temp files and added appropriate svn:ignore properties.

        Rubber-stamped by Mark Rowe.

        * data: Added svn:ignore property for "versioncache" and "versioncache.*" files.

        * data/template: Added svn:ignore property for "template" subdirectory.
        * data/template/template: Removed precompiled template subdirectory.

        * data/versioncache: Removed.
        * data/versioncache.*: Removed backup versioncache files.

        * data/webdot: Added svn:ignore property for "*.dot" files.
        * data/webdot/*.dot: Removed cached webdot files.

2008-04-08  Adam Roben  <aroben@apple.com>

        Combine :equal operations with the following operation if they are
        fewer than 3 characters long

        This keeps us from showing lots of small changes on long lines, just
        because some letters happened to be the same.

        Inspired by
        http://code.google.com/p/reviewboard/source/browse/trunk/reviewboard/diffviewer/diffutils.py?r=1264#147

        * PrettyPatch/PrettyPatch.rb:
        (PrettyPatch::DiffSection.initialize): Remove :equal operations fewer
        than 3 characters long. The characters from the removed operations
        become part of the subsequent operation.
        (PrettyPatch::CodeLine.text_as_html): Don't wrap 0-length strings in
        <ins>/<del> tags. Also removed the @fromLineNumber.nil? and
        @toLineNumber.nil? checks as they are no longer reliable now that
        we're removing operations.

2008-04-08  Adam Roben  <aroben@apple.com>

        Change PrettyPatch to use DiffBuilder for intra-line diffs

        This gives us much prettier intra-line diffs, largely because it can
        distinguish multiple changes on the same line. e.g., if a line changes
        from:

        const int myConstant = 0;

        to

        static const unsigned myConstant;

        You will see that "static " was inserted, "int" changed to "unsigned",
        and " = 0" was deleted.

        This seems to have also gotten rid of some spurious instances of
        "<ins></ins>" and "<del></del>" at the end of a line.

        * PrettyPatch/PrettyPatch.rb:
        (PrettyPatch::DiffSection.initialize): Use DiffBuilder instead of
        setChangeExtentFromLine (which had been copied from Trac's diffing
        code).
        (PrettyPatch::CodeLine):
         - Removed the changeExtent attribute
         - Added the operations attribute
         - Removed the setChangeExtentFromLine method
        (PrettyPatch::CodeLine.text_as_html): Uses @operations to determine
        what text to wrap in <ins> and <del> tags.
        * PrettyPatch/diff.rb: Deleted a bunch of code we don't use.
        (HTMLDiff::DiffBuilder.initialize): Moved code here from the old build
        method, but left out the calls to perform_operation, since we build
        the diff HTML outside of this class.
        (HTMLDiff::DiffBuilder.split_inputs_to_words): Removed calls to
        convert_html_to_list_of_words, since we're not diffing HTML.

2008-04-08  Adam Roben  <aroben@apple.com>

        Check in diff.rb

        This came from
        http://instiki.rubyforge.org/svn/instiki/trunk/lib/diff.rb
        revision 28521

        * PrettyPatch/diff.rb: Added.

2008-03-04  Adam Roben  <aroben@apple.com>

        * PrettyPatch/PrettyPatch.rb: Allow the extent of the previous file to
        be omitted from the hunk header.

