110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
210f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch// found in the LICENSE file.
410f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch#ifndef WebConvertableToTraceFormat_h
610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch#define WebConvertableToTraceFormat_h
710f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
810f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch#include "WebPrivatePtr.h"
910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch#include "WebString.h"
1010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
11c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
12e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)
1310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdochnamespace TraceEvent {
1410f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdochclass ConvertableToTraceFormat;
1510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch}
1610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
1710f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdochclass WebConvertableToTraceFormat {
1810f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdochpublic:
1910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch    WebConvertableToTraceFormat() { }
2010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch#if INSIDE_BLINK
21e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    WebConvertableToTraceFormat(TraceEvent::ConvertableToTraceFormat*);
2210f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch#endif
2310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch    ~WebConvertableToTraceFormat() { reset(); }
2410f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
2510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch    BLINK_PLATFORM_EXPORT WebString asTraceFormat() const;
2610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch    BLINK_PLATFORM_EXPORT void assign(const WebConvertableToTraceFormat&);
2710f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch    BLINK_PLATFORM_EXPORT void reset();
2810f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
2910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch    WebConvertableToTraceFormat(const WebConvertableToTraceFormat& r) { assign(r); }
3010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch    WebConvertableToTraceFormat& operator=(const WebConvertableToTraceFormat& r)
3110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch    {
3210f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch        assign(r);
3310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch        return *this;
3410f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch    }
3510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
3610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdochprivate:
37e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    WebPrivatePtr<TraceEvent::ConvertableToTraceFormat> m_private;
3810f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch};
3910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
4010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch} // namespace blink
4110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch
4210f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch#endif
43