Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(487)

Unified Diff: snapshot/mac/crashpad_info_client_options_test.cc

Issue 1052813002: win: make CrashpadInfo retrievable (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: more fixes Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: snapshot/mac/crashpad_info_client_options_test.cc
diff --git a/snapshot/mac/crashpad_info_client_options_test.cc b/snapshot/mac/crashpad_info_client_options_test.cc
deleted file mode 100644
index 3b7e2f23131e72c134f35ee737b6475636d04379..0000000000000000000000000000000000000000
--- a/snapshot/mac/crashpad_info_client_options_test.cc
+++ /dev/null
@@ -1,205 +0,0 @@
-// Copyright 2015 The Crashpad 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.
-
-#include "snapshot/mac/crashpad_info_client_options.h"
-
-#include <dlfcn.h>
-
-#include "base/files/file_path.h"
-#include "client/crashpad_info.h"
-#include "gtest/gtest.h"
-#include "snapshot/mac/process_snapshot_mac.h"
-#include "test/paths.h"
-
-namespace crashpad {
-namespace test {
-namespace {
-
-TEST(CrashpadInfoClientOptions, TriStateFromCrashpadInfo) {
- EXPECT_EQ(TriState::kUnset,
- CrashpadInfoClientOptions::TriStateFromCrashpadInfo(0));
- EXPECT_EQ(TriState::kEnabled,
- CrashpadInfoClientOptions::TriStateFromCrashpadInfo(1));
- EXPECT_EQ(TriState::kDisabled,
- CrashpadInfoClientOptions::TriStateFromCrashpadInfo(2));
-
- // These will produce log messages but should result in kUnset being returned.
- EXPECT_EQ(TriState::kUnset,
- CrashpadInfoClientOptions::TriStateFromCrashpadInfo(3));
- EXPECT_EQ(TriState::kUnset,
- CrashpadInfoClientOptions::TriStateFromCrashpadInfo(4));
- EXPECT_EQ(TriState::kUnset,
- CrashpadInfoClientOptions::TriStateFromCrashpadInfo(0xff));
-}
-
-class ScopedUnsetCrashpadInfoOptions {
- public:
- explicit ScopedUnsetCrashpadInfoOptions(CrashpadInfo* crashpad_info)
- : crashpad_info_(crashpad_info) {
- }
-
- ~ScopedUnsetCrashpadInfoOptions() {
- crashpad_info_->set_crashpad_handler_behavior(TriState::kUnset);
- crashpad_info_->set_system_crash_reporter_forwarding(TriState::kUnset);
- }
-
- private:
- CrashpadInfo* crashpad_info_;
-
- DISALLOW_COPY_AND_ASSIGN(ScopedUnsetCrashpadInfoOptions);
-};
-
-TEST(CrashpadInfoClientOptions, OneModule) {
- // Make sure that the initial state has all values unset.
- ProcessSnapshotMac process_snapshot;
- ASSERT_TRUE(process_snapshot.Initialize(mach_task_self()));
-
- CrashpadInfoClientOptions options;
- process_snapshot.GetCrashpadOptions(&options);
-
- EXPECT_EQ(TriState::kUnset, options.crashpad_handler_behavior);
- EXPECT_EQ(TriState::kUnset, options.system_crash_reporter_forwarding);
-
- CrashpadInfo* crashpad_info = CrashpadInfo::GetCrashpadInfo();
- ASSERT_TRUE(crashpad_info);
-
- {
- ScopedUnsetCrashpadInfoOptions unset(crashpad_info);
-
- crashpad_info->set_crashpad_handler_behavior(TriState::kEnabled);
-
- process_snapshot.GetCrashpadOptions(&options);
- EXPECT_EQ(TriState::kEnabled, options.crashpad_handler_behavior);
- EXPECT_EQ(TriState::kUnset, options.system_crash_reporter_forwarding);
- }
-
- {
- ScopedUnsetCrashpadInfoOptions unset(crashpad_info);
-
- crashpad_info->set_system_crash_reporter_forwarding(TriState::kDisabled);
-
- process_snapshot.GetCrashpadOptions(&options);
- EXPECT_EQ(TriState::kUnset, options.crashpad_handler_behavior);
- EXPECT_EQ(TriState::kDisabled, options.system_crash_reporter_forwarding);
- }
-}
-
-class ScopedDlHandle {
- public:
- explicit ScopedDlHandle(void* dl_handle)
- : dl_handle_(dl_handle) {
- }
-
- ~ScopedDlHandle() {
- if (dl_handle_) {
- if (dlclose(dl_handle_) != 0) {
- LOG(ERROR) << "dlclose: " << dlerror();
- }
- }
- }
-
- bool valid() const { return dl_handle_ != nullptr; }
-
- template <typename T>
- T LookUpSymbol(const char* symbol_name) {
- return reinterpret_cast<T>(dlsym(dl_handle_, symbol_name));
- }
-
- private:
- void* dl_handle_;
-
- DISALLOW_COPY_AND_ASSIGN(ScopedDlHandle);
-};
-
-TEST(CrashpadInfoClientOptions, TwoModules) {
- // Open the module, which has its own CrashpadInfo structure.
- base::FilePath module_path =
- Paths::Executable().DirName().Append("crashpad_snapshot_test_module.so");
- ScopedDlHandle dl_handle(
- dlopen(module_path.value().c_str(), RTLD_LAZY | RTLD_LOCAL));
- ASSERT_TRUE(dl_handle.valid()) << "dlopen " << module_path.value() << ": "
- << dlerror();
-
- // Get the function pointer from the module. This wraps GetCrashpadInfo(), but
- // because it runs in the module, it returns the remote module’s CrashpadInfo
- // structure.
- CrashpadInfo* (*TestModule_GetCrashpadInfo)() =
- dl_handle.LookUpSymbol<CrashpadInfo* (*)()>("TestModule_GetCrashpadInfo");
- ASSERT_TRUE(TestModule_GetCrashpadInfo);
-
- // Make sure that the initial state has all values unset.
- ProcessSnapshotMac process_snapshot;
- ASSERT_TRUE(process_snapshot.Initialize(mach_task_self()));
-
- CrashpadInfoClientOptions options;
- process_snapshot.GetCrashpadOptions(&options);
-
- EXPECT_EQ(TriState::kUnset, options.crashpad_handler_behavior);
- EXPECT_EQ(TriState::kUnset, options.system_crash_reporter_forwarding);
-
- // Get both CrashpadInfo structures.
- CrashpadInfo* local_crashpad_info = CrashpadInfo::GetCrashpadInfo();
- ASSERT_TRUE(local_crashpad_info);
-
- CrashpadInfo* remote_crashpad_info = TestModule_GetCrashpadInfo();
- ASSERT_TRUE(remote_crashpad_info);
-
- {
- ScopedUnsetCrashpadInfoOptions unset_local(local_crashpad_info);
- ScopedUnsetCrashpadInfoOptions unset_remote(remote_crashpad_info);
-
- // When only one module sets a value, it applies to the entire process.
- remote_crashpad_info->set_crashpad_handler_behavior(TriState::kEnabled);
-
- process_snapshot.GetCrashpadOptions(&options);
- EXPECT_EQ(TriState::kEnabled, options.crashpad_handler_behavior);
- EXPECT_EQ(TriState::kUnset, options.system_crash_reporter_forwarding);
-
- // When more than one module sets a value, the first one in the module list
- // applies to the process. The local module should appear before the remote
- // module, because the local module loaded the remote module.
- local_crashpad_info->set_crashpad_handler_behavior(TriState::kDisabled);
-
- process_snapshot.GetCrashpadOptions(&options);
- EXPECT_EQ(TriState::kDisabled, options.crashpad_handler_behavior);
- EXPECT_EQ(TriState::kUnset, options.system_crash_reporter_forwarding);
- }
-
- {
- ScopedUnsetCrashpadInfoOptions unset_local(local_crashpad_info);
- ScopedUnsetCrashpadInfoOptions unset_remote(remote_crashpad_info);
-
- // When only one module sets a value, it applies to the entire process.
- remote_crashpad_info->set_system_crash_reporter_forwarding(
- TriState::kDisabled);
-
- process_snapshot.GetCrashpadOptions(&options);
- EXPECT_EQ(TriState::kUnset, options.crashpad_handler_behavior);
- EXPECT_EQ(TriState::kDisabled, options.system_crash_reporter_forwarding);
-
- // When more than one module sets a value, the first one in the module list
- // applies to the process. The local module should appear before the remote
- // module, because the local module loaded the remote module.
- local_crashpad_info->set_system_crash_reporter_forwarding(
- TriState::kEnabled);
-
- process_snapshot.GetCrashpadOptions(&options);
- EXPECT_EQ(TriState::kUnset, options.crashpad_handler_behavior);
- EXPECT_EQ(TriState::kEnabled, options.system_crash_reporter_forwarding);
- }
-}
-
-} // namespace
-} // namespace test
-} // namespace crashpad
« no previous file with comments | « snapshot/mac/crashpad_info_client_options.cc ('k') | snapshot/mac/crashpad_info_client_options_test_module.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698