15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright (c) 2011 The Chromium Authors. All rights reserved.
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * found in the LICENSE file.
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Error codes and data structures used to report errors when loading a nexe.
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_PLUGIN_ERROR_H
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_PLUGIN_ERROR_H
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "native_client/src/include/nacl_macros.h"
17a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ppapi/c/private/ppb_nacl_private.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace plugin {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ErrorInfo {
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ErrorInfo() {
24a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    SetReport(PP_NACL_ERROR_UNKNOWN, std::string());
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  void SetReport(PP_NaClError error_code, const std::string& message) {
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    error_code_ = error_code;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    message_ = message;
30ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  }
31ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
32a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  PP_NaClError error_code() const {
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return error_code_;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const std::string& message() const {
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return message_;
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  PP_NaClError error_code_;
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string message_;
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NACL_DISALLOW_COPY_AND_ASSIGN(ErrorInfo);
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace plugin
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_PLUGIN_ERROR_H
49