| // Copyright 2016 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef COMPONENTS_MEDIA_ROUTER_COMMON_ROUTE_REQUEST_RESULT_H_ |
| #define COMPONENTS_MEDIA_ROUTER_COMMON_ROUTE_REQUEST_RESULT_H_ |
| |
| #include <memory> |
| #include <string> |
| |
| #include "components/media_router/common/mojom/route_request_result_code.mojom.h" |
| #include "url/gurl.h" |
| |
| namespace media_router { |
| |
| class MediaRoute; |
| |
| // Holds the result of a successful or failed route request. |
| // On success: |
| // |route|: The route created or joined. |
| // |presentation_id|: |
| // The presentation ID of the route created or joined. In the case of |
| // |CreateRoute()|, the ID is generated by MediaRouter and is guaranteed to |
| // be unique. |
| // |error|: Empty string. |
| // |result_code|: mojom::RouteRequestResultCode::OK |
| // On failure: |
| // |route|: nullptr |
| // |presentation_id|: Empty string. |
| // |error|: Non-empty string describing the error. |
| // |result_code|: A value from mojom::RouteRequestResultCode describing the |
| // error. |
| class RouteRequestResult { |
| public: |
| static std::unique_ptr<RouteRequestResult> FromSuccess( |
| const MediaRoute& route, |
| const std::string& presentation_id); |
| static std::unique_ptr<RouteRequestResult> FromError( |
| const std::string& error, |
| mojom::RouteRequestResultCode result_code); |
| RouteRequestResult(std::unique_ptr<MediaRoute> route, |
| const std::string& presentation_id, |
| const std::string& error, |
| mojom::RouteRequestResultCode result_code); |
| |
| RouteRequestResult(const RouteRequestResult&) = delete; |
| RouteRequestResult& operator=(const RouteRequestResult&) = delete; |
| |
| ~RouteRequestResult(); |
| |
| // Note the caller does not own the returned MediaRoute. The caller must |
| // create a copy if they wish to use it after this object is destroyed. |
| const MediaRoute* route() const { return route_.get(); } |
| std::string presentation_id() const { return presentation_id_; } |
| GURL presentation_url() const { return presentation_url_; } |
| std::string error() const { return error_; } |
| mojom::RouteRequestResultCode result_code() const { return result_code_; } |
| |
| private: |
| std::unique_ptr<MediaRoute> route_; |
| std::string presentation_id_; |
| GURL presentation_url_; |
| std::string error_; |
| mojom::RouteRequestResultCode result_code_; |
| }; |
| |
| } // namespace media_router |
| |
| #endif // COMPONENTS_MEDIA_ROUTER_COMMON_ROUTE_REQUEST_RESULT_H_ |