| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ppapi/tests/test_broker.h" | 5 #include "ppapi/tests/test_broker.h" |
| 6 | 6 |
| 7 #if defined(_MSC_VER) | 7 #if defined(_MSC_VER) |
| 8 #define OS_WIN 1 | 8 #define OS_WIN 1 |
| 9 #include <windows.h> | 9 #include <windows.h> |
| 10 #else | 10 #else |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 | 51 |
| 52 PlatformFile IntToPlatformFile(int32_t handle) { | 52 PlatformFile IntToPlatformFile(int32_t handle) { |
| 53 #if defined(OS_WIN) | 53 #if defined(OS_WIN) |
| 54 return reinterpret_cast<HANDLE>(static_cast<intptr_t>(handle)); | 54 return reinterpret_cast<HANDLE>(static_cast<intptr_t>(handle)); |
| 55 #elif defined(OS_POSIX) | 55 #elif defined(OS_POSIX) |
| 56 return handle; | 56 return handle; |
| 57 #endif | 57 #endif |
| 58 } | 58 } |
| 59 | 59 |
| 60 #if defined(OS_POSIX) | 60 #if defined(OS_POSIX) |
| 61 |
| 61 #define HANDLE_EINTR(x) ({ \ | 62 #define HANDLE_EINTR(x) ({ \ |
| 62 typeof(x) __eintr_result__; \ | 63 typeof(x) eintr_wrapper_result; \ |
| 63 do { \ | 64 do { \ |
| 64 __eintr_result__ = x; \ | 65 eintr_wrapper_result = (x); \ |
| 65 } while (__eintr_result__ == -1 && errno == EINTR); \ | 66 } while (eintr_wrapper_result == -1 && errno == EINTR); \ |
| 66 __eintr_result__;\ | 67 eintr_wrapper_result; \ |
| 67 }) | 68 }) |
| 69 |
| 70 #define IGNORE_EINTR(x) ({ \ |
| 71 typeof(x) eintr_wrapper_result; \ |
| 72 do { \ |
| 73 eintr_wrapper_result = (x); \ |
| 74 if (eintr_wrapper_result == -1 && errno == EINTR) { \ |
| 75 eintr_wrapper_result = 0; \ |
| 76 } \ |
| 77 } while (0); \ |
| 78 eintr_wrapper_result; \ |
| 79 }) |
| 80 |
| 68 #endif | 81 #endif |
| 69 | 82 |
| 70 bool ReadMessage(PlatformFile file, size_t message_len, char* message) { | 83 bool ReadMessage(PlatformFile file, size_t message_len, char* message) { |
| 71 #if defined(OS_WIN) | 84 #if defined(OS_WIN) |
| 72 assert(message_len < std::numeric_limits<DWORD>::max()); | 85 assert(message_len < std::numeric_limits<DWORD>::max()); |
| 73 DWORD read = 0; | 86 DWORD read = 0; |
| 74 const DWORD size = static_cast<DWORD>(message_len); | 87 const DWORD size = static_cast<DWORD>(message_len); |
| 75 return ::ReadFile(file, message, size, &read, NULL) && read == size; | 88 return ::ReadFile(file, message, size, &read, NULL) && read == size; |
| 76 #elif defined(OS_POSIX) | 89 #elif defined(OS_POSIX) |
| 77 assert(message_len < | 90 assert(message_len < |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 bool success = ReadMessage(file, message_len, message_received) && | 127 bool success = ReadMessage(file, message_len, message_received) && |
| 115 !::strcmp(message_received, message); | 128 !::strcmp(message_received, message); |
| 116 delete [] message_received; | 129 delete [] message_received; |
| 117 return success; | 130 return success; |
| 118 } | 131 } |
| 119 | 132 |
| 120 bool ClosePlatformFile(PlatformFile file) { | 133 bool ClosePlatformFile(PlatformFile file) { |
| 121 #if defined(OS_WIN) | 134 #if defined(OS_WIN) |
| 122 return !!::CloseHandle(file); | 135 return !!::CloseHandle(file); |
| 123 #elif defined(OS_POSIX) | 136 #elif defined(OS_POSIX) |
| 124 return !HANDLE_EINTR(::close(file)); | 137 return !IGNORE_EINTR(::close(file)); |
| 125 #endif | 138 #endif |
| 126 } | 139 } |
| 127 | 140 |
| 128 bool VerifyIsUnsandboxed() { | 141 bool VerifyIsUnsandboxed() { |
| 129 #if defined(OS_WIN) | 142 #if defined(OS_WIN) |
| 130 FILE* file = NULL; | 143 FILE* file = NULL; |
| 131 wchar_t temp_path[MAX_PATH] = {'\0'}; | 144 wchar_t temp_path[MAX_PATH] = {'\0'}; |
| 132 wchar_t file_name[MAX_PATH] = {'\0'}; | 145 wchar_t file_name[MAX_PATH] = {'\0'}; |
| 133 if (!::GetTempPath(MAX_PATH, temp_path) || | 146 if (!::GetTempPath(MAX_PATH, temp_path) || |
| 134 !::GetTempFileName(temp_path, L"test_pepper_broker", 0, file_name) || | 147 !::GetTempFileName(temp_path, L"test_pepper_broker", 0, file_name) || |
| 135 ::_wfopen_s(&file, file_name, L"w")) | 148 ::_wfopen_s(&file, file_name, L"w")) |
| 136 return false; | 149 return false; |
| 137 | 150 |
| 138 if (::fclose(file)) { | 151 if (::fclose(file)) { |
| 139 ::DeleteFile(file_name); | 152 ::DeleteFile(file_name); |
| 140 return false; | 153 return false; |
| 141 } | 154 } |
| 142 | 155 |
| 143 return !!::DeleteFile(file_name); | 156 return !!::DeleteFile(file_name); |
| 144 #elif defined(OS_POSIX) | 157 #elif defined(OS_POSIX) |
| 145 char file_name[] = "/tmp/test_pepper_broker_XXXXXX"; | 158 char file_name[] = "/tmp/test_pepper_broker_XXXXXX"; |
| 146 int fd = ::mkstemp(file_name); | 159 int fd = ::mkstemp(file_name); |
| 147 if (-1 == fd) | 160 if (-1 == fd) |
| 148 return false; | 161 return false; |
| 149 | 162 |
| 150 if (HANDLE_EINTR(::close(fd))) { | 163 if (IGNORE_EINTR(::close(fd))) { |
| 151 ::remove(file_name); | 164 ::remove(file_name); |
| 152 return false; | 165 return false; |
| 153 } | 166 } |
| 154 | 167 |
| 155 return !::remove(file_name); | 168 return !::remove(file_name); |
| 156 #endif | 169 #endif |
| 157 } | 170 } |
| 158 | 171 |
| 159 // Callback in the broker when a new broker connection occurs. | 172 // Callback in the broker when a new broker connection occurs. |
| 160 int32_t OnInstanceConnected(PP_Instance instance, int32_t handle) { | 173 int32_t OnInstanceConnected(PP_Instance instance, int32_t handle) { |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 330 } | 343 } |
| 331 | 344 |
| 332 std::string TestBroker::TestIsAllowedPermissionGranted() { | 345 std::string TestBroker::TestIsAllowedPermissionGranted() { |
| 333 PP_Resource broker = broker_interface_->CreateTrusted( | 346 PP_Resource broker = broker_interface_->CreateTrusted( |
| 334 instance_->pp_instance()); | 347 instance_->pp_instance()); |
| 335 ASSERT_TRUE(broker); | 348 ASSERT_TRUE(broker); |
| 336 ASSERT_EQ(PP_TRUE, broker_interface_->IsAllowed(broker)); | 349 ASSERT_EQ(PP_TRUE, broker_interface_->IsAllowed(broker)); |
| 337 | 350 |
| 338 PASS(); | 351 PASS(); |
| 339 } | 352 } |
| OLD | NEW |