Imported Upstream version 3.8.0

Former-commit-id: 6a76a29bd07d86e57c6c8da45c65ed5447d38a61
This commit is contained in:
Jo Shields
2014-09-04 09:07:35 +01:00
parent a575963da9
commit fe777c5c82
1062 changed files with 12460 additions and 5983 deletions

View File

@@ -211,6 +211,10 @@ namespace System.Net.Http.Headers
static string EncodeBase64Value (string value)
{
bool quoted = value.Length > 1 && value [0] == '"' && value [value.Length - 1] == '"';
if (quoted)
value = value.Substring (1, value.Length - 2);
for (int i = 0; i < value.Length; ++i) {
var ch = value[i];
if (ch > 127) {
@@ -220,7 +224,7 @@ namespace System.Net.Http.Headers
}
}
if (!Lexer.IsValidToken (value))
if (quoted || !Lexer.IsValidToken (value))
return "\"" + value + "\"";
return value;

View File

@@ -34,6 +34,7 @@ namespace System.Net.Http
public abstract class DelegatingHandler : HttpMessageHandler
{
bool disposed;
HttpMessageHandler handler;
protected DelegatingHandler ()
{
@@ -47,13 +48,24 @@ namespace System.Net.Http
InnerHandler = innerHandler;
}
public HttpMessageHandler InnerHandler { get; set; }
public HttpMessageHandler InnerHandler {
get {
return handler;
}
set {
if (value == null)
throw new ArgumentNullException ("InnerHandler");
handler = value;
}
}
protected override void Dispose (bool disposing)
{
if (disposing && !disposed) {
disposed = true;
InnerHandler.Dispose ();
if (InnerHandler != null)
InnerHandler.Dispose ();
}
base.Dispose (disposing);

View File

@@ -1,3 +1,4 @@
System.Net.Http/DelegatingHandlerTest.cs
System.Net.Http/ByteArrayContentTest.cs
System.Net.Http/FormUrlEncodedContentTest.cs
System.Net.Http/HttpClientHandlerTest.cs

View File

@@ -215,6 +215,14 @@ namespace MonoTests.System.Net.Http.Headers
value.FileName = "(@)";
Assert.AreEqual ("\"(@)\"", value.FileName, "#21");
Assert.AreEqual (new NameValueHeaderValue ("filename", "\"(@)\""), value.Parameters.First (), "#22");
value.FileName = "\"č\"";
Assert.AreEqual ("č", value.FileName, "#31");
Assert.AreEqual (new NameValueHeaderValue ("filename", "\"=?utf-8?B?xI0=?=\""), value.Parameters.First (), "#32");
value.FileName = "\"quoted\"";
Assert.AreEqual ("\"quoted\"", value.FileName, "#41");
Assert.AreEqual (new NameValueHeaderValue ("filename", "\"quoted\""), value.Parameters.First (), "#42");
}
[Test]

View File

@@ -0,0 +1,63 @@
//
// DelegatingHandlerTest.cs
//
// Authors:
// Marek Safar <marek.safar@gmail.com>
//
// Copyright (C) 2014 Xamarin Inc (http://www.xamarin.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using System;
using NUnit.Framework;
using System.Net.Http;
using System.IO;
using System.Threading.Tasks;
namespace MonoTests.System.Net.Http
{
[TestFixture]
public class DelegatingHandlerTest
{
class DefaultHandler : DelegatingHandler
{
}
[Test]
public void DisposeTest ()
{
var handler = new DefaultHandler ();
handler.Dispose ();
}
[Test]
public void InnerHandler_Invalid ()
{
var handler = new DefaultHandler ();
try {
handler.InnerHandler = null;
Assert.Fail ("#1");
} catch (ArgumentNullException) {
}
}
}
}