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_BROWSER_DESKTOP_MEDIA_ID_H_ 6 #define CONTENT_PUBLIC_BROWSER_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 aura { 16 class Window; 17 } // namespace aura 18 19 namespace content { 20 21 // Type used to identify desktop media sources. It's converted to string and 22 // stored in MediaStreamRequest::requested_video_device_id . 23 struct CONTENT_EXPORT DesktopMediaID { 24 public: 25 enum Type { 26 TYPE_NONE, 27 TYPE_SCREEN, 28 TYPE_WINDOW, 29 TYPE_AURA_WINDOW, 30 }; 31 typedef intptr_t Id; 32 33 #if defined(USE_AURA) 34 // Assigns integer identifier to the |window| and returns DesktopMediaID of 35 // type TYPE_AURA_WINDOW that corresponds to that |window|. 36 static DesktopMediaID RegisterAuraWindow(aura::Window* window); 37 38 // For DesktopMediaID of type TYPE_AURA_WINDOW returns the |window| that was 39 // previously registered using RegisterAuraWindow(). 40 static aura::Window* GetAuraWindowById(const DesktopMediaID& id); 41 #endif // defined(USE_AURA) 42 43 static DesktopMediaID Parse(const std::string& str); 44 45 DesktopMediaID() 46 : type(TYPE_NONE), 47 id(0) { 48 } 49 DesktopMediaID(Type type, Id id) 50 : type(type), 51 id(id) { 52 } 53 54 // Operators so that DesktopMediaID can be used with STL containers. 55 bool operator<(const DesktopMediaID& other) const { 56 return type < other.type || (type == other.type && id < other.id); 57 } 58 bool operator==(const DesktopMediaID& other) const { 59 return type == other.type && id == other.id; 60 } 61 62 bool is_null() { return type == TYPE_NONE; } 63 64 std::string ToString(); 65 66 Type type; 67 Id id; 68 }; 69 70 } // namespace content 71 72 #endif // CONTENT_PUBLIC_BROWSER_DESKTOP_MEDIA_ID_H_ 73