Commits on Oct 29, 2012
Commits on Oct 24, 2012
  1. Gave page a maxAuthAttempts setting.

    QtWebKit normally loops infinitely trying to authenticate when it receives a
    401 code, preventing all callbacks (onLoadFinished, onResourceReceived, etc).
    This commit changes it to only try a set amount of times before aborting.
    rhoot committed with ariya Oct 17, 2012
Commits on Oct 17, 2012
  1. Adding a simple example to help understand events.

    Lots of discussions on the ML could be easily put
    to rest if people could run something like this
    and see the result.
    It's not a real fix or improvement, just a "cute"
    example and as such I didn't raise a "proper"
    detro committed with ariya Oct 16, 2012
Commits on Sep 28, 2012
Commits on Sep 24, 2012
  1. Stop potential crash by guarding the access to the page.

    Based on the work from Shawn Krisman (
    ariya committed Sep 24, 2012
  2. Revert breaking behavior in commit ecda224.

    Keeping the page alive instead of destroying causes unexpected behavior
    compared to version 1.6 and earlier. See the discussion:
    ariya committed Sep 24, 2012
Commits on Sep 23, 2012
  1. Advertise the migrated wiki pages.

    ariya committed Sep 23, 2012
Commits on Sep 22, 2012
  1. Remove non-working weather example.

    The example stops working since the request is blocked. It needs a
    rewrite to use a different service.
    ariya committed Sep 22, 2012
Commits on Sep 21, 2012
  1. Remove outdated Debian control files.

    Rather than advertising wrong info (PyPhantomJS etc), debian/ is
    removed until new up-to-date content is prepared.
    ariya committed Sep 21, 2012
  2. Fixing issue with CookieJar not loading at boot.

    * Using the "QTimer::singleShot" bites back in the ass
    * The "script" takes priority and runs before the SLOT is actually invoked
    Why was I using a Timer?
    Not sure anymore: it must have slipped in while I was trying to work out
    all the other issues I had with QNetworkCookieJar, and I left it there.
    detro committed with ariya Sep 21, 2012
  3. Non-zero exit code if any test fails.

    In the callback function passed to `waitFor`, the call to `page.evaluate`
    returns a 1 or 0, and this is then passed to `phantom.exit` (with a 1
    indicating at least one test failed, 0 indicating all tests passed).
    ianoxley committed with ariya Sep 11, 2012
  4. Added 'tests passed' message.

    If all tests pass, a message indicating this is output to the console.
    ianoxley committed with ariya Sep 11, 2012
  5. Test failure CSS selectors changed.

    Changed the CSS selectors used to identify failed tests.
    The old selector was `div.jasmine_reporter > div.suite.failed`,
    but this no longer seems to match any elements.
    The new selector is `.results > #details > .specDetails.failed`. For each
    failing test the `.description` and `` elements are
    used to output the failures to the console.
    ianoxley committed with ariya Sep 11, 2012
  6. Changed CSS selector used when checking for whether tests have finished.

    When using the jasmine 1.2.0 standalone version, `.runner .description`
    doesn't seem to match any elements.
    I noticed pending tests can be found using the CSS selector
    `.symbolSummary .pending`, so changed the testFx callback to check
    that no elements are left matching this selector.
    ianoxley committed with ariya Sep 11, 2012
  7. Revert "Fix crash on exit (Issues #136, #148 and #149)"

    This reverts commit 5acaa6b.
    removed m_page deletion.
    Shawn Krisman committed with ariya Aug 19, 2012
  8. Make the key enums as part of WebPage instance.

    This way, we don't add anything into phantom object.
    ariya committed Sep 21, 2012
Commits on Sep 19, 2012
  1. Merge pull request #319 from detro/ghostdriver-dev

    GhostDriver Development Branch - Master Push #4
    ariya committed Sep 19, 2012
Commits on Sep 18, 2012
  1. Made the "Callbacks injection" recursive.

    Before this, only the first level of child frames had the possibility to use
    the Callbacks object. Now is injected recursively in all of them.
    This is an extension of coverage for [Issue #683](
    detro committed Sep 18, 2012
  2. Redesign the Cookies API (part 2)

    Addresses [Issue #761](
    This is a combination of 5 commits.
    1. Date in Cookie can be set via "seconds since epoch" as well.
    * In addition to the current string format, we can now set cookies via integer of msec since epoch
    * Expiration date can be set via "expires" or "expiry" option ("expires" has priority)
    * Returned cookie will contain "expires" as string and "expiry" as msec since epoch
    I believe this can simplify code that uses cookies and it doesn't change the functionality.
    2. Applying the "--debug" command line options as early as possible.
    3. Fixing bug and behaviour in the CookieJar
    * It's not possible to set a cookie without a domain: will default to the domain of the page it's set on
    * "page.clearCookies()" was broken
    * "cookiejar.deleteCookie("name", url)" reimplemented because deleting via "expiration" doesn't work
    4. Improving (and more fixing) in the CookieJar
    * Purging Session or Expired Cookies now works
    * Added boolean return values to inform if the requested cookie operation succeeded
    * Timestamps for "expiry/expires" in Milliseconds, as JS does by default
    * Improved detection that a cookie has been accepted or rejected by the cookiejar
    NOTE: Unfortunately, the Qt provided QNetworkCookieJar is a very limited
    and not extremely well designed solution. It doesn't provide any "nice
    and clean" CRUD API, and you are only left with a SET/GET to deal with.
    Mechanism to understand when and when not a cookie is added are hidden,
    and require extra work in the sub-class (our CookieJar) to fill the gap.
    5. Methods on the "phantom" object to manipulate the CookieJar.
    * phantom.cookies (array of JSON/Cookies)
    * phantom.cookiesEnabled (boolean)
    * phantom.addCookie
    * phantom.deleteCookie
    * phantom.clearCookies
    Those methods operate on the CookieJar directly and have no URL restriction.
    In other words, if page P1 can see set of cookies C1, and page P2 can see set of
    cookies C2, "phantom.cookies" can see (i.e. operate upon) both C1 and C2.
    detro committed Sep 9, 2012