forked from Pissandshittium/pissandshittium
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Don't allow multiple opens for Pepper FileSystem.
BUG=73667 TEST=test_file_system.{h,cc} Review URL: http://codereview.chromium.org/6596026 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76278 0039d316-1c4b-4281-b951-d872f2087c98
- Loading branch information
yzshen@chromium.org
committed
Feb 28, 2011
1 parent
d58ff1d
commit 95caad2
Showing
7 changed files
with
122 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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(); | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
// 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. | ||
|
||
#ifndef PAPPI_TESTS_TEST_FILE_SYSTEM_H_ | ||
#define PAPPI_TESTS_TEST_FILE_SYSTEM_H_ | ||
|
||
#include <string> | ||
|
||
#include "ppapi/tests/test_case.h" | ||
|
||
class TestFileSystem : public TestCase { | ||
public: | ||
explicit TestFileSystem(TestingInstance* instance) : TestCase(instance) {} | ||
|
||
// TestCase implementation. | ||
virtual bool Init(); | ||
virtual void RunTest(); | ||
|
||
private: | ||
std::string TestOpen(); | ||
std::string TestMultipleOpens(); | ||
}; | ||
|
||
#endif // PAPPI_TESTS_TEST_FILE_SYSTEM_H_ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters