// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

part of html;

/// @domName $DOMNAME
class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
  factory $CLASSNAME.get(String url, onComplete($CLASSNAME request)) =>
      _$(CLASSNAME)FactoryProvider.create$(CLASSNAME)_get(url, onComplete);

  factory $CLASSNAME.getWithCredentials(String url,
      onComplete($CLASSNAME request)) =>
      _$(CLASSNAME)FactoryProvider.create$(CLASSNAME)_getWithCredentials(url,
      onComplete);

$!MEMBERS
}
