// Copyright 2015 The Cobalt Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

interface H5vccStorage {
  void clearCookies();
  // We don't support synchronous flush, this is legacy.
  void flush(optional boolean sync = false);
  boolean getCookiesEnabled();
  void setCookiesEnabled(boolean value);

  H5vccStorageWriteTestResponse writeTest(unsigned long test_size, DOMString test_string);
  H5vccStorageVerifyTestResponse verifyTest(unsigned long test_size, DOMString test_string);

  H5vccStorageResourceTypeQuotaBytesDictionary getQuota();
  H5vccStorageSetQuotaResponse setQuota(H5vccStorageResourceTypeQuotaBytesDictionary quota);
};
