Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(57)

Unified Diff: chrome/browser/media/ash_desktop_media_list.h

Issue 100833002: Add AshDesktopMediaList and enable Desktop Capture API on Chrome OS. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/media/ash_desktop_media_list.h
diff --git a/chrome/browser/media/ash_desktop_media_list.h b/chrome/browser/media/ash_desktop_media_list.h
new file mode 100644
index 0000000000000000000000000000000000000000..d7136559e3fe8800f0befa52c43eabfe055abf01
--- /dev/null
+++ b/chrome/browser/media/ash_desktop_media_list.h
@@ -0,0 +1,100 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_MEDIA_ASH_DESKTOP_MEDIA_LIST_H_
+#define CHROME_BROWSER_MEDIA_ASH_DESKTOP_MEDIA_LIST_H_
+
+#include "base/basictypes.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/memory/weak_ptr.h"
+#include "base/sequenced_task_runner.h"
+#include "chrome/browser/media/desktop_media_list.h"
+#include "content/public/browser/desktop_media_id.h"
+#include "ui/gfx/image/image_skia.h"
+
+class SkBitmap;
+
+namespace aura {
+class Window;
+}
+
+namespace cc {
+class CopyOutputResult;
+class SingleReleaseCallback;
+}
+
+// Implementation of DesktopMediaList that shows native screens and
+// native windows.
+class AshDesktopMediaList : public DesktopMediaList {
+ public:
+ enum SourceTypes {
+ SCREENS = 1,
+ WINDOWS = 2,
+ };
+
+ explicit AshDesktopMediaList(int source_types);
+ virtual ~AshDesktopMediaList();
+
+ // DesktopMediaList interface.
+ virtual void SetUpdatePeriod(base::TimeDelta period) OVERRIDE;
+ virtual void SetThumbnailSize(const gfx::Size& thumbnail_size) OVERRIDE;
+ virtual void StartUpdating(DesktopMediaListObserver* observer) OVERRIDE;
+ virtual int GetSourceCount() const OVERRIDE;
+ virtual const Source& GetSource(int index) const OVERRIDE;
+ virtual void SetViewDialogWindowId(
+ content::DesktopMediaID::Id dialog_id) OVERRIDE;
+
+ private:
+ // Struct used to represent sources list the model gets from the Worker.
+ struct SourceDescription {
+ SourceDescription(content::DesktopMediaID id, const string16& name);
+
+ content::DesktopMediaID id;
+ string16 name;
+ };
+
+ // Order comparator for sources. Used to sort list of sources.
+ static bool CompareSources(const SourceDescription& a,
+ const SourceDescription& b);
+
+ void Refresh();
+ void EnumerateWindowsForRoot(
+ std::vector<AshDesktopMediaList::SourceDescription>* windows,
+ aura::Window* root_window,
+ int container_id);
+ void EnumerateSources(
+ std::vector<AshDesktopMediaList::SourceDescription>* windows);
+ void CaptureThumbnail(content::DesktopMediaID id, aura::Window* window);
+ void OnThumbnailCaptured(content::DesktopMediaID id,
+ scoped_ptr<cc::CopyOutputResult> result);
+ void OnFrameScalingFinished(content::DesktopMediaID id,
+ scoped_ptr<SkBitmap> captured_bitmap,
+ scoped_ptr<SkBitmap> scaled_bitmap);
+ void OnFrameCaptureFinished();
+
+ int source_types_;
+
+ // Time interval between mode updates.
+ base::TimeDelta update_period_;
+
+ // Size of thumbnails generated by the model.
+ gfx::Size thumbnail_size_;
+
+ // ID of the hosting dialog.
+ content::DesktopMediaID::Id view_dialog_id_;
+
+ // The observer passed to StartUpdating().
+ DesktopMediaListObserver* observer_;
+
+ // Current list of sources.
+ std::vector<Source> sources_;
+
+ int pending_window_capture_requests_;
+
+ base::WeakPtrFactory<AshDesktopMediaList> weak_factory_;
+
+ DISALLOW_COPY_AND_ASSIGN(AshDesktopMediaList);
+};
+
+#endif // CHROME_BROWSER_MEDIA_ASH_DESKTOP_MEDIA_LIST_H_

Powered by Google App Engine
This is Rietveld 408576698