Skip to content

Commit

Permalink
Get crashpad_client_test and crashpad_handler_test building
Browse files Browse the repository at this point in the history
Stubs a variety of classes (CrashReportExceptionHandler,
ExceptionHandlerServer, HTTPTransport, CrashReportDatabase).

Bug: crashpad:196
Change-Id: I4772f90d0d2ad07cc2f3c2ef119e92fde5c7acef
Reviewed-on: https://chromium-review.googlesource.com/809940
Reviewed-by: Mark Mentovai <[email protected]>
Commit-Queue: Scott Graham <[email protected]>
  • Loading branch information
sgraham authored and Commit Bot committed Dec 6, 2017
1 parent e0f3963 commit 15c4fff
Show file tree
Hide file tree
Showing 13 changed files with 304 additions and 11 deletions.
10 changes: 2 additions & 8 deletions build/run_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,20 +173,14 @@ def main(args):
is_fuchsia = _BinaryDirLooksLikeFuchsiaBuild(binary_dir)

tests = [
'crashpad_client_test',
'crashpad_handler_test',
'crashpad_minidump_test',
'crashpad_snapshot_test',
'crashpad_test_test',
'crashpad_util_test',
]

if not is_fuchsia:
tests.extend([
# TODO(scottmg): Move the rest of these to the common section once they
# are building and running successfully.
'crashpad_client_test',
'crashpad_handler_test',
])

if is_fuchsia:
zircon_nodename = os.environ.get('ZIRCON_NODENAME')
if not zircon_nodename:
Expand Down
7 changes: 7 additions & 0 deletions client/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,13 @@ static_library("client") {
]
}

if (is_fuchsia) {
sources += [
"crash_report_database_fuchsia.cc",
"crashpad_client_fuchsia.cc",
]
}

public_configs = [ "..:crashpad_config" ]

deps = [
Expand Down
35 changes: 35 additions & 0 deletions client/crash_report_database_fuchsia.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
// Copyright 2017 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 "client/crash_report_database.h"

#include "base/logging.h"

namespace crashpad {

// static
std::unique_ptr<CrashReportDatabase> CrashReportDatabase::Initialize(
const base::FilePath& path) {
NOTREACHED(); // TODO(scottmg): https://crashpad.chromium.org/bug/196
return std::unique_ptr<CrashReportDatabase>();
}

// static
std::unique_ptr<CrashReportDatabase>
CrashReportDatabase::InitializeWithoutCreating(const base::FilePath& path) {
NOTREACHED(); // TODO(scottmg): https://crashpad.chromium.org/bug/196
return std::unique_ptr<CrashReportDatabase>();
}

} // namespace crashpad
38 changes: 38 additions & 0 deletions client/crashpad_client_fuchsia.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
// Copyright 2017 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 "client/crashpad_client.h"

#include "base/logging.h"

namespace crashpad {

CrashpadClient::CrashpadClient() {}

CrashpadClient::~CrashpadClient() {}

bool CrashpadClient::StartHandler(
const base::FilePath& handler,
const base::FilePath& database,
const base::FilePath& metrics_dir,
const std::string& url,
const std::map<std::string, std::string>& annotations,
const std::vector<std::string>& arguments,
bool restartable,
bool asynchronous_start) {
NOTREACHED(); // TODO(scottmg): https://crashpad.chromium.org/bug/196
return false;
}

} // namespace crashpad
10 changes: 10 additions & 0 deletions handler/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,15 @@ static_library("handler") {
]
}

if (is_fuchsia) {
sources += [
"fuchsia/crash_report_exception_handler.cc",
"fuchsia/crash_report_exception_handler.h",
"fuchsia/exception_handler_server.cc",
"fuchsia/exception_handler_server.h",
]
}

public_configs = [ "..:crashpad_config" ]

deps = [
Expand Down Expand Up @@ -75,6 +84,7 @@ source_set("handler_test") {
"../client",
"../compat",
"../snapshot",
"../snapshot:test_support",
"../test",
"../util",
"//base",
Expand Down
27 changes: 27 additions & 0 deletions handler/fuchsia/crash_report_exception_handler.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// Copyright 2017 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 "handler/fuchsia/crash_report_exception_handler.h"

namespace crashpad {

CrashReportExceptionHandler::CrashReportExceptionHandler(
CrashReportDatabase* database,
CrashReportUploadThread* upload_thread,
const std::map<std::string, std::string>* process_annotations,
const UserStreamDataSources* user_stream_data_sources) {}

CrashReportExceptionHandler::~CrashReportExceptionHandler() {}

} // namespace crashpad
65 changes: 65 additions & 0 deletions handler/fuchsia/crash_report_exception_handler.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
// Copyright 2017 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.

#ifndef CRASHPAD_HANDLER_FUCHSIA_CRASH_REPORT_EXCEPTION_HANDLER_H_
#define CRASHPAD_HANDLER_FUCHSIA_CRASH_REPORT_EXCEPTION_HANDLER_H_

#include <map>
#include <string>

#include "base/macros.h"
#include "client/crash_report_database.h"
#include "handler/crash_report_upload_thread.h"
#include "handler/user_stream_data_source.h"

namespace crashpad {

//! \brief An exception handler that writes crash reports for exception messages
//! to a CrashReportDatabase. This class is not yet implemented.
class CrashReportExceptionHandler {
public:
//! \brief Creates a new object that will store crash reports in \a database.
//!
//! \param[in] database The database to store crash reports in. Weak.
//! \param[in] upload_thread The upload thread to notify when a new crash
//! report is written into \a database.
//! \param[in] process_annotations A map of annotations to insert as
//! process-level annotations into each crash report that is written. Do
//! not confuse this with module-level annotations, which are under the
//! control of the crashing process, and are used to implement Chrome's
//! "crash keys." Process-level annotations are those that are beyond the
//! control of the crashing process, which must reliably be set even if
//! the process crashes before it’s able to establish its own annotations.
//! To interoperate with Breakpad servers, the recommended practice is to
//! specify values for the `"prod"` and `"ver"` keys as process
//! annotations.
//! \param[in] user_stream_data_sources Data sources to be used to extend
//! crash reports. For each crash report that is written, the data sources
//! are called in turn. These data sources may contribute additional
//! minidump streams. `nullptr` if not required.
CrashReportExceptionHandler(
CrashReportDatabase* database,
CrashReportUploadThread* upload_thread,
const std::map<std::string, std::string>* process_annotations,
const UserStreamDataSources* user_stream_data_sources);

~CrashReportExceptionHandler();

private:
DISALLOW_COPY_AND_ASSIGN(CrashReportExceptionHandler);
};

} // namespace crashpad

#endif // CRASHPAD_HANDLER_FUCHSIA_CRASH_REPORT_EXCEPTION_HANDLER_H_
29 changes: 29 additions & 0 deletions handler/fuchsia/exception_handler_server.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
// Copyright 2017 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 "handler/fuchsia/exception_handler_server.h"

#include "base/logging.h"

namespace crashpad {

ExceptionHandlerServer::ExceptionHandlerServer() {}

ExceptionHandlerServer::~ExceptionHandlerServer() {}

void ExceptionHandlerServer::Run(CrashReportExceptionHandler* handler) {
NOTREACHED(); // TODO(scottmg): https://crashpad.chromium.org/bug/196
}

} // namespace crashpad
44 changes: 44 additions & 0 deletions handler/fuchsia/exception_handler_server.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
// Copyright 2017 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.

#ifndef CRASHPAD_HANDLER_FUCHSIA_EXCEPTION_HANDLER_SERVER_H_
#define CRASHPAD_HANDLER_FUCHSIA_EXCEPTION_HANDLER_SERVER_H_

#include "base/macros.h"

namespace crashpad {

class CrashReportExceptionHandler;

//! \brief Runs the main exception-handling server in Crashpad's handler
//! process. This class is not yet implemented.
class ExceptionHandlerServer {
public:
//! \brief Constructs an ExceptionHandlerServer object.
ExceptionHandlerServer();
~ExceptionHandlerServer();

//! \brief Runs the exception-handling server.
//!
//! \param[in] handler The handler to which the exceptions are delegated when
//! they are caught in Run(). Ownership is not transferred.
void Run(CrashReportExceptionHandler* handler);

private:
DISALLOW_COPY_AND_ASSIGN(ExceptionHandlerServer);
};

} // namespace crashpad

#endif // CRASHPAD_HANDLER_FUCHSIA_EXCEPTION_HANDLER_SERVER_H_
15 changes: 15 additions & 0 deletions handler/handler_main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,9 @@
#include "util/win/handle.h"
#include "util/win/initial_client_data.h"
#include "util/win/session_end_watcher.h"
#elif defined(OS_FUCHSIA)
#include "handler/fuchsia/crash_report_exception_handler.h"
#include "handler/fuchsia/exception_handler_server.h"
#endif // OS_MACOSX

namespace crashpad {
Expand Down Expand Up @@ -345,6 +348,16 @@ void InstallCrashHandler() {
ALLOW_UNUSED_LOCAL(terminate_handler);
}

#elif defined(OS_FUCHSIA)

void InstallCrashHandler() {
NOTREACHED(); // TODO(scottmg): https://crashpad.chromium.org/bug/196
}

void ReinstallCrashHandler() {
NOTREACHED(); // TODO(scottmg): https://crashpad.chromium.org/bug/196
}

#endif // OS_MACOSX

void MonitorSelf(const Options& options) {
Expand Down Expand Up @@ -727,6 +740,8 @@ int HandlerMain(int argc,
if (!options.pipe_name.empty()) {
exception_handler_server.SetPipeName(base::UTF8ToUTF16(options.pipe_name));
}
#elif defined(OS_FUCHSIA)
ExceptionHandlerServer exception_handler_server;
#endif // OS_MACOSX

base::GlobalHistogramAllocator* histogram_allocator = nullptr;
Expand Down
4 changes: 2 additions & 2 deletions handler/main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
#include <windows.h>
#endif

#if defined(OS_MACOSX)
#if defined(OS_POSIX)

int main(int argc, char* argv[]) {
return crashpad::HandlerMain(argc, argv, nullptr);
Expand Down Expand Up @@ -50,4 +50,4 @@ int wmain(int argc, wchar_t* argv[]) {
return crashpad::ToolSupport::Wmain(argc, argv, HandlerMainAdaptor);
}

#endif // OS_MACOSX
#endif // OS_POSIX
5 changes: 4 additions & 1 deletion util/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -310,7 +310,10 @@ static_library("util") {
}

if (is_fuchsia) {
sources += [ "misc/paths_fuchsia.cc" ]
sources += [
"misc/paths_fuchsia.cc",
"net/http_transport_fuchsia.cc",
]
}

public_configs = [ "..:crashpad_config" ]
Expand Down
26 changes: 26 additions & 0 deletions util/net/http_transport_fuchsia.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// Copyright 2017 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 "util/net/http_transport.h"

#include "base/logging.h"

namespace crashpad {

std::unique_ptr<HTTPTransport> HTTPTransport::Create() {
NOTREACHED(); // TODO(scottmg): https://crashpad.chromium.org/bug/196
return std::unique_ptr<HTTPTransport>();
}

} // namespace crashpad

0 comments on commit 15c4fff

Please sign in to comment.