OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_MEDIA_DESKTOP_MEDIA_LIST_H_ | 5 #ifndef CHROME_BROWSER_MEDIA_DESKTOP_MEDIA_LIST_H_ |
6 #define CHROME_BROWSER_MEDIA_DESKTOP_MEDIA_LIST_H_ | 6 #define CHROME_BROWSER_MEDIA_DESKTOP_MEDIA_LIST_H_ |
7 | 7 |
| 8 #include "base/id_map.h" |
| 9 #include "base/memory/singleton.h" |
8 #include "base/strings/string16.h" | 10 #include "base/strings/string16.h" |
9 #include "base/time/time.h" | 11 #include "base/time/time.h" |
10 #include "content/public/browser/desktop_media_id.h" | 12 #include "content/public/browser/desktop_media_id.h" |
| 13 #include "content/public/browser/web_contents.h" |
| 14 #include "content/public/browser/web_contents_observer.h" |
| 15 #include "ui/gfx/image/image.h" |
11 #include "ui/gfx/image/image_skia.h" | 16 #include "ui/gfx/image/image_skia.h" |
12 | 17 |
13 class DesktopMediaListObserver; | 18 class DesktopMediaListObserver; |
14 | 19 |
15 // DesktopMediaList provides the list of desktop media source (screens, windows, | 20 // DesktopMediaList provides the list of desktop media source (screens, windows, |
16 // tabs), and their thumbnails, to the desktop media picker dialog. It | 21 // tabs), and their thumbnails, to the desktop media picker dialog. It |
17 // transparently updates the list in the background, and notifies the desktop | 22 // transparently updates the list in the background, and notifies the desktop |
18 // media picker when something changes. | 23 // media picker when something changes. |
19 class DesktopMediaList { | 24 class DesktopMediaList { |
20 public: | 25 public: |
(...skipping 29 matching lines...) Expand all Loading... |
50 // notifications will be generated for each existing source as it is | 55 // notifications will be generated for each existing source as it is |
51 // enumerated. After the initial enumeration the model will be refreshed based | 56 // enumerated. After the initial enumeration the model will be refreshed based |
52 // on the update period, and notifications generated only for changes in the | 57 // on the update period, and notifications generated only for changes in the |
53 // model. | 58 // model. |
54 virtual void StartUpdating(DesktopMediaListObserver* observer) = 0; | 59 virtual void StartUpdating(DesktopMediaListObserver* observer) = 0; |
55 | 60 |
56 virtual int GetSourceCount() const = 0; | 61 virtual int GetSourceCount() const = 0; |
57 virtual const Source& GetSource(int index) const = 0; | 62 virtual const Source& GetSource(int index) const = 0; |
58 }; | 63 }; |
59 | 64 |
| 65 // Create a image with an enlarged favicon on its center and black boundary. |
| 66 // If fails, an empty image will return. |
| 67 // The function is used to create a thumbnail for chrome tab preview. |
| 68 gfx::ImageSkia CreateEnlargedFaviconImage(gfx::Size size, gfx::Image& favicon); |
| 69 |
| 70 // Register WebContents. |
| 71 class WebContentsRegistry : public content::WebContentsObserver { |
| 72 public: |
| 73 static WebContentsRegistry* GetInstance(); |
| 74 |
| 75 // Return an id to represent the WebContents. |
| 76 int RegisterWebContents(content::WebContents* web_contents); |
| 77 // Get a registed WebContents by id. If the Webcontent is destroyed, a nullptr |
| 78 // will be return. |
| 79 content::WebContents* GetWebContentsById(int id); |
| 80 |
| 81 private: |
| 82 friend struct base::DefaultSingletonTraits<WebContentsRegistry>; |
| 83 WebContentsRegistry(); |
| 84 ~WebContentsRegistry() override; |
| 85 |
| 86 // content::WebContentsObserver overrides. |
| 87 void WebContentsDestroyed(content::WebContents* web_contents) override; |
| 88 |
| 89 IDMap<content::WebContents> registered_web_contents_; |
| 90 |
| 91 DISALLOW_COPY_AND_ASSIGN(WebContentsRegistry); |
| 92 }; |
| 93 |
60 #endif // CHROME_BROWSER_MEDIA_DESKTOP_MEDIA_LIST_H_ | 94 #endif // CHROME_BROWSER_MEDIA_DESKTOP_MEDIA_LIST_H_ |
OLD | NEW |