| Index: ppapi/tests/test_file_system.cc
|
| diff --git a/ppapi/tests/test_file_system.cc b/ppapi/tests/test_file_system.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..958f8963c1062b2bbfbe92f43e8194ac5e4c340b
|
| --- /dev/null
|
| +++ b/ppapi/tests/test_file_system.cc
|
| @@ -0,0 +1,79 @@
|
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "ppapi/tests/test_file_system.h"
|
| +
|
| +#include <string.h>
|
| +
|
| +#include "ppapi/c/pp_errors.h"
|
| +#include "ppapi/cpp/dev/file_system_dev.h"
|
| +#include "ppapi/tests/test_utils.h"
|
| +#include "ppapi/tests/testing_instance.h"
|
| +
|
| +REGISTER_TEST_CASE(FileSystem);
|
| +
|
| +bool TestFileSystem::Init() {
|
| + return InitTestingInterface() && EnsureRunningOverHTTP();
|
| +}
|
| +
|
| +void TestFileSystem::RunTest() {
|
| + RUN_TEST(Open);
|
| + RUN_TEST(MultipleOpens);
|
| +}
|
| +
|
| +std::string TestFileSystem::TestOpen() {
|
| + TestCompletionCallback callback(instance_->pp_instance());
|
| +
|
| + // Open.
|
| + pp::FileSystem_Dev file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY);
|
| + int32_t rv = file_system.Open(1024, callback);
|
| + if (rv == PP_ERROR_WOULDBLOCK)
|
| + rv = callback.WaitForResult();
|
| + if (rv != PP_OK)
|
| + return ReportError("FileSystem::Open", rv);
|
| +
|
| + // Open aborted (see the DirectoryReader test for comments).
|
| + callback.reset_run_count();
|
| + rv = pp::FileSystem_Dev(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY)
|
| + .Open(1024, callback);
|
| + if (callback.run_count() > 0)
|
| + return "FileSystem::Open ran callback synchronously.";
|
| + if (rv == PP_ERROR_WOULDBLOCK) {
|
| + rv = callback.WaitForResult();
|
| + if (rv != PP_ERROR_ABORTED)
|
| + return "FileSystem::Open not aborted.";
|
| + } else if (rv != PP_OK) {
|
| + return ReportError("FileSystem::Open", rv);
|
| + }
|
| +
|
| + PASS();
|
| +}
|
| +
|
| +std::string TestFileSystem::TestMultipleOpens() {
|
| + // Should not allow multiple opens, no matter the first open has completed or
|
| + // not.
|
| + TestCompletionCallback callback_1(instance_->pp_instance());
|
| + pp::FileSystem_Dev file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY);
|
| + int32_t rv_1 = file_system.Open(1024, callback_1);
|
| + if (callback_1.run_count() > 0)
|
| + return "FileSystem::Open ran callback synchronously.";
|
| +
|
| + TestCompletionCallback callback_2(instance_->pp_instance());
|
| + int32_t rv_2 = file_system.Open(1024, callback_2);
|
| + if (rv_2 == PP_ERROR_WOULDBLOCK || rv_2 == PP_OK)
|
| + return "FileSystem::Open should not allow multiple opens.";
|
| +
|
| + if (rv_1 == PP_ERROR_WOULDBLOCK)
|
| + rv_1 = callback_1.WaitForResult();
|
| + if (rv_1 != PP_OK)
|
| + return ReportError("FileSystem::Open", rv_1);
|
| +
|
| + TestCompletionCallback callback_3(instance_->pp_instance());
|
| + int32_t rv_3 = file_system.Open(1024, callback_3);
|
| + if (rv_3 == PP_ERROR_WOULDBLOCK || rv_3 == PP_OK)
|
| + return "FileSystem::Open should not allow multiple opens.";
|
| +
|
| + PASS();
|
| +}
|
| +
|
|
|