1197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch// found in the LICENSE file.
4197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
5197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#ifndef WebRTCOfferOptions_h
6197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#define WebRTCOfferOptions_h
7197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
8197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "WebCommon.h"
9197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "WebNonCopyable.h"
10197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "WebPrivatePtr.h"
11197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
12c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
13197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
14e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)class RTCOfferOptions;
15197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
16197021e6b966cfb06891637935ef33fff06433d1Ben Murdochclass WebRTCOfferOptions {
17197021e6b966cfb06891637935ef33fff06433d1Ben Murdochpublic:
18197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    WebRTCOfferOptions() { }
19197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    WebRTCOfferOptions(const WebRTCOfferOptions& other) { assign(other); }
20197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    ~WebRTCOfferOptions() { reset(); }
21197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
22197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    WebRTCOfferOptions& operator=(const WebRTCOfferOptions& other)
23197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    {
24197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch        assign(other);
25197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch        return *this;
26197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    }
27197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
28197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    BLINK_PLATFORM_EXPORT void assign(const WebRTCOfferOptions&);
29197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
30197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    BLINK_PLATFORM_EXPORT void reset();
31197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    bool isNull() const { return m_private.isNull(); }
32197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
33197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    BLINK_PLATFORM_EXPORT int32_t offerToReceiveVideo() const;
34197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    BLINK_PLATFORM_EXPORT int32_t offerToReceiveAudio() const;
35197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    BLINK_PLATFORM_EXPORT bool voiceActivityDetection() const;
36197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    BLINK_PLATFORM_EXPORT bool iceRestart() const;
37197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
38197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#if INSIDE_BLINK
397242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    BLINK_PLATFORM_EXPORT WebRTCOfferOptions(RTCOfferOptions*);
40197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#endif
41197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
42197021e6b966cfb06891637935ef33fff06433d1Ben Murdochprivate:
43e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    WebPrivatePtr<RTCOfferOptions> m_private;
44197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch};
45197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
46197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch} // namespace blink
47197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
48197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#endif // WebRTCOfferOptions_h
49