diff options
author | rkc@chromium.org <rkc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-01 21:31:07 +0000 |
---|---|---|
committer | rkc@chromium.org <rkc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-01 21:31:07 +0000 |
commit | 3f4181a35b24d814f498362c98eab0e161154427 (patch) | |
tree | 511fb698b3746f2fb322f6c0580eb82aafe17fbe /ash/screensaver | |
parent | 143094e5a5f6c524ef57a0201906c988ecbc88ba (diff) | |
download | chromium_src-3f4181a35b24d814f498362c98eab0e161154427.zip chromium_src-3f4181a35b24d814f498362c98eab0e161154427.tar.gz chromium_src-3f4181a35b24d814f498362c98eab0e161154427.tar.bz2 |
Screensaver implementation for ChromeOS.
This is the initial implementation for screensaver extensions. The feature is currently behind a flag and installing an extension with a screensaver permission without the flag enabled will do nothing.
This currently allows one Screensaver extension to be installed at a time, and brings up the screensaver after a fixed 2 minutes. Further work to be done is to add different timeouts for power manager if the screensaver is active, add more tests and add security features for the screensaver permission (if needed, this needs to be discussed still).
TBR'ed jhawkins for chrome_browser_chromeos.gypi
R=mpcomplete@chromium.org,stevenjb@chromium.org
BUG=163681
TBR=jhawkins@chromium.org
Review URL: https://codereview.chromium.org/12093058
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@180189 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash/screensaver')
-rw-r--r-- | ash/screensaver/screensaver_view.cc | 15 | ||||
-rw-r--r-- | ash/screensaver/screensaver_view.h | 4 | ||||
-rw-r--r-- | ash/screensaver/screensaver_view_unittest.cc | 10 |
3 files changed, 20 insertions, 9 deletions
diff --git a/ash/screensaver/screensaver_view.cc b/ash/screensaver/screensaver_view.cc index d42b50d..d439e52 100644 --- a/ash/screensaver/screensaver_view.cc +++ b/ash/screensaver/screensaver_view.cc @@ -39,6 +39,10 @@ void CloseScreensaver() { internal::ScreensaverView::CloseScreensaver(); } +bool IsScreensaverShown() { + return internal::ScreensaverView::IsScreensaverShown(); +} + namespace internal { // static @@ -57,6 +61,17 @@ void ScreensaverView::CloseScreensaver() { } } +// static +bool ScreensaverView::IsScreensaverShown() { + return g_instance && g_instance->IsScreensaverShowingURL(g_instance->url_); +} + +bool ScreensaverView::IsScreensaverShowingURL(const GURL& url) { + return screensaver_webview_ && + screensaver_webview_->web_contents() && + (screensaver_webview_->web_contents()->GetURL() == url); +} + //////////////////////////////////////////////////////////////////////////////// // ScreensaverView, views::WidgetDelegateView implementation. views::View* ScreensaverView::GetContentsView() { diff --git a/ash/screensaver/screensaver_view.h b/ash/screensaver/screensaver_view.h index 434dd29..0a0b777 100644 --- a/ash/screensaver/screensaver_view.h +++ b/ash/screensaver/screensaver_view.h @@ -27,6 +27,7 @@ class ScreensaverViewTest; ASH_EXPORT void ShowScreensaver(const GURL& url); ASH_EXPORT void CloseScreensaver(); +ASH_EXPORT bool IsScreensaverShown(); typedef base::Callback<views::WebView*(content::BrowserContext*)> WebViewFactory; @@ -42,6 +43,8 @@ class ScreensaverView : public views::WidgetDelegateView, static void ShowScreensaver(const GURL& url); static void CloseScreensaver(); + static bool IsScreensaverShown(); + private: friend class test::ScreensaverViewTest; @@ -67,6 +70,7 @@ class ScreensaverView : public views::WidgetDelegateView, // For testing purposes. static ASH_EXPORT ScreensaverView* GetInstance(); + ASH_EXPORT bool IsScreensaverShowingURL(const GURL& url); // URL to show in the screensaver. GURL url_; diff --git a/ash/screensaver/screensaver_view_unittest.cc b/ash/screensaver/screensaver_view_unittest.cc index d10ab1a..6f82dd0 100644 --- a/ash/screensaver/screensaver_view_unittest.cc +++ b/ash/screensaver/screensaver_view_unittest.cc @@ -34,15 +34,7 @@ class ScreensaverViewTest : public ash::test::AshTestBase { internal::ScreensaverView::GetInstance(); EXPECT_TRUE(screensaver != NULL); if (!screensaver) return; - - EXPECT_TRUE(screensaver->screensaver_webview_ != NULL); - if (!screensaver->screensaver_webview_) return; - - EXPECT_TRUE(screensaver->screensaver_webview_->web_contents() != NULL); - if (!screensaver->screensaver_webview_->web_contents()) return; - - EXPECT_EQ(screensaver->screensaver_webview_->web_contents()->GetURL(), - url_); + EXPECT_TRUE(screensaver->IsScreensaverShowingURL(url_)); } void ExpectClosedScreensaver() { |