| OLD | NEW |
| 1 // Copyright 2015 The Crashpad Authors. All rights reserved. | 1 // Copyright 2015 The Crashpad Authors. All rights reserved. |
| 2 // | 2 // |
| 3 // Licensed under the Apache License, Version 2.0 (the "License"); | 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
| 4 // you may not use this file except in compliance with the License. | 4 // you may not use this file except in compliance with the License. |
| 5 // You may obtain a copy of the License at | 5 // You may obtain a copy of the License at |
| 6 // | 6 // |
| 7 // http://www.apache.org/licenses/LICENSE-2.0 | 7 // http://www.apache.org/licenses/LICENSE-2.0 |
| 8 // | 8 // |
| 9 // Unless required by applicable law or agreed to in writing, software | 9 // Unless required by applicable law or agreed to in writing, software |
| 10 // distributed under the License is distributed on an "AS IS" BASIS, | 10 // distributed under the License is distributed on an "AS IS" BASIS, |
| 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 12 // See the License for the specific language governing permissions and | 12 // See the License for the specific language governing permissions and |
| 13 // limitations under the License. | 13 // limitations under the License. |
| 14 | 14 |
| 15 #include "util/win/exception_handler_server.h" | 15 #include "util/win/exception_handler_server.h" |
| 16 | 16 |
| 17 #include <windows.h> | 17 #include <windows.h> |
| 18 | 18 |
| 19 #include <string> | 19 #include <string> |
| 20 #include <vector> | 20 #include <vector> |
| 21 | 21 |
| 22 #include "base/basictypes.h" | 22 #include "base/basictypes.h" |
| 23 #include "base/strings/stringprintf.h" | 23 #include "base/strings/stringprintf.h" |
| 24 #include "base/strings/utf_string_conversions.h" |
| 24 #include "client/crashpad_client.h" | 25 #include "client/crashpad_client.h" |
| 25 #include "gtest/gtest.h" | 26 #include "gtest/gtest.h" |
| 26 #include "test/win/win_child_process.h" | 27 #include "test/win/win_child_process.h" |
| 27 #include "util/thread/thread.h" | 28 #include "util/thread/thread.h" |
| 28 #include "util/win/address_types.h" | 29 #include "util/win/address_types.h" |
| 29 #include "util/win/registration_protocol_win.h" | 30 #include "util/win/registration_protocol_win.h" |
| 30 #include "util/win/scoped_handle.h" | 31 #include "util/win/scoped_handle.h" |
| 31 | 32 |
| 32 namespace crashpad { | 33 namespace crashpad { |
| 33 namespace test { | 34 namespace test { |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 &server(), &server_thread()); | 128 &server(), &server_thread()); |
| 128 ASSERT_NO_FATAL_FAILURE(delegate().WaitForStart()); | 129 ASSERT_NO_FATAL_FAILURE(delegate().WaitForStart()); |
| 129 } | 130 } |
| 130 | 131 |
| 131 TEST_F(ExceptionHandlerServerTest, StopWhileConnected) { | 132 TEST_F(ExceptionHandlerServerTest, StopWhileConnected) { |
| 132 server_thread().Start(); | 133 server_thread().Start(); |
| 133 ScopedStopServerAndJoinThread scoped_stop_server_and_join_thread( | 134 ScopedStopServerAndJoinThread scoped_stop_server_and_join_thread( |
| 134 &server(), &server_thread()); | 135 &server(), &server_thread()); |
| 135 ASSERT_NO_FATAL_FAILURE(delegate().WaitForStart()); | 136 ASSERT_NO_FATAL_FAILURE(delegate().WaitForStart()); |
| 136 CrashpadClient client; | 137 CrashpadClient client; |
| 137 client.SetHandler(pipe_name()); // Connect to server. | 138 client.SetHandlerIPCPipe(base::UTF8ToUTF16(pipe_name())); |
| 138 // Leaving this scope causes the server to be stopped, while the connection | 139 // Leaving this scope causes the server to be stopped, while the connection |
| 139 // is still open. | 140 // is still open. |
| 140 } | 141 } |
| 141 | 142 |
| 142 std::string ReadString(FileHandle handle) { | 143 std::string ReadString(FileHandle handle) { |
| 143 size_t length = 0; | 144 size_t length = 0; |
| 144 EXPECT_TRUE(LoggingReadFile(handle, &length, sizeof(length))); | 145 EXPECT_TRUE(LoggingReadFile(handle, &length, sizeof(length))); |
| 145 scoped_ptr<char[]> buffer(new char[length]); | 146 scoped_ptr<char[]> buffer(new char[length]); |
| 146 EXPECT_TRUE(LoggingReadFile(handle, &buffer[0], length)); | 147 EXPECT_TRUE(LoggingReadFile(handle, &buffer[0], length)); |
| 147 return std::string(&buffer[0], length); | 148 return std::string(&buffer[0], length); |
| 148 } | 149 } |
| 149 | 150 |
| 150 void WriteString(FileHandle handle, const std::string& str) { | 151 void WriteString(FileHandle handle, const std::string& str) { |
| 151 size_t length = str.size(); | 152 size_t length = str.size(); |
| 152 EXPECT_TRUE(LoggingWriteFile(handle, &length, sizeof(length))); | 153 EXPECT_TRUE(LoggingWriteFile(handle, &length, sizeof(length))); |
| 153 EXPECT_TRUE(LoggingWriteFile(handle, &str[0], length)); | 154 EXPECT_TRUE(LoggingWriteFile(handle, &str[0], length)); |
| 154 } | 155 } |
| 155 | 156 |
| 156 class TestClient final : public WinChildProcess { | 157 class TestClient final : public WinChildProcess { |
| 157 public: | 158 public: |
| 158 TestClient() : WinChildProcess() {} | 159 TestClient() : WinChildProcess() {} |
| 159 | 160 |
| 160 ~TestClient() {} | 161 ~TestClient() {} |
| 161 | 162 |
| 162 private: | 163 private: |
| 163 int Run() override { | 164 int Run() override { |
| 164 std::string pipe_name = ReadString(ReadPipeHandle()); | 165 std::wstring pipe_name = base::UTF8ToUTF16(ReadString(ReadPipeHandle())); |
| 165 CrashpadClient client; | 166 CrashpadClient client; |
| 166 if (!client.SetHandler(pipe_name)) { | 167 if (!client.SetHandlerIPCPipe(pipe_name)) { |
| 167 ADD_FAILURE(); | 168 ADD_FAILURE(); |
| 168 return EXIT_FAILURE; | 169 return EXIT_FAILURE; |
| 169 } | 170 } |
| 170 if (!client.UseHandler()) { | 171 if (!client.UseHandler()) { |
| 171 ADD_FAILURE(); | 172 ADD_FAILURE(); |
| 172 return EXIT_FAILURE; | 173 return EXIT_FAILURE; |
| 173 } | 174 } |
| 174 WriteString(WritePipeHandle(), "OK"); | 175 WriteString(WritePipeHandle(), "OK"); |
| 175 return EXIT_SUCCESS; | 176 return EXIT_SUCCESS; |
| 176 } | 177 } |
| (...skipping 22 matching lines...) Expand all Loading... |
| 199 | 200 |
| 200 ASSERT_EQ("OK", ReadString(handles_3->read.get())); | 201 ASSERT_EQ("OK", ReadString(handles_3->read.get())); |
| 201 ASSERT_EQ("OK", ReadString(handles_2->read.get())); | 202 ASSERT_EQ("OK", ReadString(handles_2->read.get())); |
| 202 ASSERT_EQ("OK", ReadString(handles_1->read.get())); | 203 ASSERT_EQ("OK", ReadString(handles_1->read.get())); |
| 203 } | 204 } |
| 204 } | 205 } |
| 205 | 206 |
| 206 } // namespace | 207 } // namespace |
| 207 } // namespace test | 208 } // namespace test |
| 208 } // namespace crashpad | 209 } // namespace crashpad |
| OLD | NEW |