summaryrefslogtreecommitdiffstats
path: root/ash/screensaver
diff options
context:
space:
mode:
authorrkc@chromium.org <rkc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-01 21:31:07 +0000
committerrkc@chromium.org <rkc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-01 21:31:07 +0000
commit3f4181a35b24d814f498362c98eab0e161154427 (patch)
tree511fb698b3746f2fb322f6c0580eb82aafe17fbe /ash/screensaver
parent143094e5a5f6c524ef57a0201906c988ecbc88ba (diff)
downloadchromium_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.cc15
-rw-r--r--ash/screensaver/screensaver_view.h4
-rw-r--r--ash/screensaver/screensaver_view_unittest.cc10
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() {