1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CONTENT_PUBLIC_COMMON_DESKTOP_MEDIA_ID_H_ 6 #define CONTENT_PUBLIC_COMMON_DESKTOP_MEDIA_ID_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 #include "base/strings/string_number_conversions.h" 12 #include "base/strings/string_util.h" 13 #include "content/common/content_export.h" 14 15 namespace content { 16 17 // Type used to identify desktop media sources. It's converted to string and 18 // stored in MediaStreamRequest::requested_video_device_id . 19 struct CONTENT_EXPORT DesktopMediaID { 20 public: 21 enum Type { 22 TYPE_NONE, 23 TYPE_SCREEN, 24 TYPE_WINDOW, 25 }; 26 typedef intptr_t Id; 27 28 static DesktopMediaID Parse(const std::string& str); 29 30 DesktopMediaID() 31 : type(TYPE_NONE), 32 id(0) { 33 } 34 DesktopMediaID(Type type, Id id) 35 : type(type), 36 id(id) { 37 } 38 39 // Operators so that DesktopMediaID can be used with STL containers. 40 bool operator<(const DesktopMediaID& other) const { 41 return type < other.type || (type == other.type && id < other.id); 42 } 43 bool operator==(const DesktopMediaID& other) const { 44 return type == other.type && id == other.id; 45 } 46 47 bool is_null() { return type == TYPE_NONE; } 48 49 std::string ToString(); 50 51 Type type; 52 Id id; 53 }; 54 55 } // namespace content 56 57 #endif // CONTENT_PUBLIC_COMMON_DESKTOP_MEDIA_ID_H_ 58