function test_withCredentials(worker) {
  test(function() {
    var client = new XMLHttpRequest()
    assert_false(client.withCredentials, "withCredentials defaults to false")
    client.withCredentials = true
    assert_true(client.withCredentials, "is true after setting")
  }, "default value is false, set value is true")

  test(function() {
    var client = new XMLHttpRequest()
    client.open("GET", "resources/delay.py?ms=1000", true)
    client.withCredentials = true
    assert_true(client.withCredentials, "set in OPEN state")
  }, "can also be set in OPEN state")

  test(function() {
    var client = new XMLHttpRequest()
    client.open("GET", "resources/delay.py?ms=1000", false)
    if (worker) {
      client.withCredentials = true
      assert_true(client.withCredentials, "set in OPEN state")
    } else {
      assert_throws("InvalidAccessError", function() {
        client.withCredentials = true
      })
      assert_false(client.withCredentials, "set in OPEN state")
    }
  }, "setting on synchronous XHR")

  async_test(function() {
    var client = new XMLHttpRequest()
    client.open("GET", "resources/delay.py?ms=1000")
    client.send()
    assert_throws("InvalidStateError", function() { client.withCredentials = true })
    client.onreadystatechange = this.step_func(function() {
      assert_throws("InvalidStateError", function() { client.withCredentials = true })
      if (client.readyState === 4) {
        this.done()
      }
    })
  }, "setting withCredentials when not in UNSENT, OPENED state (asynchronous)")

  test(function() {
    var client = new XMLHttpRequest()
    client.open("GET", "resources/delay.py?ms=1000", false)
    client.send();
    assert_throws("InvalidStateError", function() { client.withCredentials = true })
  }, "setting withCredentials when in DONE state (synchronous)")
}
