* Numeric ids will not be converted to strings.
* String ids will be escaped, so an id of '"' doesn't produce invalid
JSON.
* List or map ids will be rejected.
* Null ids will produce no response.
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org//1255003003 .
Path normaliztion removes '.' and '..' segments from a URI. Such relative references are only intended for URI References, and Uri References are only intended for resolving against a full URI.
We do path normalization on all URIs that have a scheme, authority or an absolute path, and partial normalization on what are really just relative paths. The partial normalization can leave ".." at the start of the path.
The URI reference resolution algorithm doesn't work as expected for a URI ending in "..". Resolving "./foo" wrt. a base of "/a/.." results in "/a/foo" - this is avoided when the base is path normalized before it's used.
This also fixes the "normalizePath" function which currently removes leading '..' segments, contrary to its documentation. It also makes the function redundant since all URI paths are normalized automatically.
See discussion on http://dartbug.com/23688
Also fix bug in the removeDotSegments function.
R=floitsch@google.com
Review URL: https://codereview.chromium.org//1224263009.
This allows you to create a stream controller at one point and
add or change the callbacks later. This can be useful if you
want to store a stream controller in a final instance field and
also want the controller to call instance methods as callbacks.
R=floitsch@google.com
Review URL: https://codereview.chromium.org//1242023007.
Previously, a WebSocket would crash if it was closed after its
StreamSubscription was canceled. Now, it tracks whether the subscription
was canceled by canceling and nulling out its own internal subscription.
Fixes#23845R=ajohnsen@google.com
Review URL: https://codereview.chromium.org//1234163002 .
in checked mode.
It also checks at the end in all cases.
Iteration only goes from 0 to the original length of the list.
This ensures that iterating a list while adding to it (like by x.addAll(x))
is caught instead of growing until out-of-memory.
For well-behaved programs this makes no difference since length and original
length stay the same.
Also, it means that calling moveNext again later, after increasing the length,
will not make iteration continue. After returning false, iteration is always
done.
However, it means that reducing the length causes an out-of-range read before
reaching the end, and before a concurrent modification error can happen.
R=sra@google.com
Review URL: https://codereview.chromium.org//1024843002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45198 260f80e4-7a28-3924-810f-c04153c831b5
This is based on the archive of release notes. Its primary goal is to
provide a canonical source for Dart package developers to refer to
when determining what SDK constraints to use for their packages. It
only goes back through 1.7.0 because older SDKs aren't in wide use and
it's unlikely that package authors will need to know what features
changed back then.
R=kevmoo@google.com
Review URL: https://codereview.chromium.org//1064493002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44899 260f80e4-7a28-3924-810f-c04153c831b5