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

Unified Diff: handler/crash_report_upload_thread.cc

Issue 1295363002: Port CrashReportUploadThread to Windows (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: fixes Created 5 years, 4 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
« no previous file with comments | « handler/crash_report_upload_thread.h ('k') | handler/handler.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: handler/crash_report_upload_thread.cc
diff --git a/handler/mac/crash_report_upload_thread.cc b/handler/crash_report_upload_thread.cc
similarity index 92%
rename from handler/mac/crash_report_upload_thread.cc
rename to handler/crash_report_upload_thread.cc
index e266b7f764f4ff57a70beab323c255a45e2b3b93..489afc07c0076d18f0d2068e8c239e7d34ca0d34 100644
--- a/handler/mac/crash_report_upload_thread.cc
+++ b/handler/crash_report_upload_thread.cc
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "handler/mac/crash_report_upload_thread.h"
+#include "handler/crash_report_upload_thread.h"
#include <errno.h>
#include <time.h>
@@ -22,6 +22,8 @@
#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
+#include "base/strings/utf_string_conversions.h"
+#include "build/build_config.h"
#include "client/settings.h"
#include "snapshot/minidump/process_snapshot_minidump.h"
#include "snapshot/module_snapshot.h"
@@ -31,6 +33,7 @@
#include "util/net/http_multipart_builder.h"
#include "util/net/http_transport.h"
#include "util/stdlib/map_insert.h"
+#include "util/thread/thread.h"
namespace crashpad {
@@ -134,12 +137,32 @@ class CallRecordUploadAttempt {
} // namespace
+namespace internal {
+
+class CrashReportUploadHelperThread final : public Thread {
+ public:
+ explicit CrashReportUploadHelperThread(CrashReportUploadThread* self)
+ : self_(self) {}
+ ~CrashReportUploadHelperThread() override {}
+
+ virtual void ThreadMain() {
+ self_->ThreadMain();
+ }
+
+ private:
+ CrashReportUploadThread* self_;
+
+ DISALLOW_COPY_AND_ASSIGN(CrashReportUploadHelperThread);
+};
+
+} // namespace internal
+
CrashReportUploadThread::CrashReportUploadThread(CrashReportDatabase* database,
const std::string& url)
: url_(url),
database_(database),
semaphore_(0),
- thread_(0),
+ thread_(),
running_(false) {
}
@@ -153,11 +176,7 @@ void CrashReportUploadThread::Start() {
DCHECK(!thread_);
running_ = true;
- if ((errno = pthread_create(&thread_, nullptr, RunThreadMain, this)) != 0) {
- PLOG(ERROR) << "pthread_create";
- DCHECK(false);
- running_ = false;
- }
+ thread_.reset(new internal::CrashReportUploadHelperThread(this));
}
void CrashReportUploadThread::Stop() {
@@ -171,12 +190,8 @@ void CrashReportUploadThread::Stop() {
running_ = false;
semaphore_.Signal();
- if ((errno = pthread_join(thread_, nullptr)) != 0) {
- PLOG(ERROR) << "pthread_join";
- DCHECK(false);
- }
-
- thread_ = 0;
+ thread_->Join();
+ thread_.reset();
}
void CrashReportUploadThread::ReportPending() {
@@ -335,10 +350,15 @@ CrashReportUploadThread::UploadResult CrashReportUploadThread::UploadReport(
}
}
- http_multipart_builder.SetFileAttachment(kMinidumpKey,
- report->file_path.BaseName().value(),
- report->file_path,
- "application/octet-stream");
+ http_multipart_builder.SetFileAttachment(
+ kMinidumpKey,
+#if defined(OS_WIN)
+ base::UTF16ToUTF8(report->file_path.BaseName().value()),
+#else
+ report->file_path.BaseName().value(),
+#endif
+ report->file_path,
+ "application/octet-stream");
scoped_ptr<HTTPTransport> http_transport(HTTPTransport::Create());
http_transport->SetURL(url_);
@@ -356,11 +376,4 @@ CrashReportUploadThread::UploadResult CrashReportUploadThread::UploadReport(
return UploadResult::kSuccess;
}
-// static
-void* CrashReportUploadThread::RunThreadMain(void* arg) {
- CrashReportUploadThread* self = static_cast<CrashReportUploadThread*>(arg);
- self->ThreadMain();
- return nullptr;
-}
-
} // namespace crashpad
« no previous file with comments | « handler/crash_report_upload_thread.h ('k') | handler/handler.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698