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

Unified Diff: chrome/browser/ui/ash/screenshot_taker.cc

Issue 10908081: Refactor screenshot directory source (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase again Created 8 years, 3 months 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
« no previous file with comments | « no previous file | chrome/browser/ui/webui/feedback_ui.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/ash/screenshot_taker.cc
diff --git a/chrome/browser/ui/ash/screenshot_taker.cc b/chrome/browser/ui/ash/screenshot_taker.cc
index d6859e63555a088b8323684db03ba46448e10976..4077b939b165ff231552001964ebe1071142acfb 100644
--- a/chrome/browser/ui/ash/screenshot_taker.cc
+++ b/chrome/browser/ui/ash/screenshot_taker.cc
@@ -13,19 +13,16 @@
#include "base/bind.h"
#include "base/file_path.h"
#include "base/file_util.h"
-#include "base/i18n/time_formatting.h"
#include "base/logging.h"
#include "base/memory/ref_counted_memory.h"
#include "base/stringprintf.h"
#include "base/threading/sequenced_worker_pool.h"
#include "base/time.h"
-#include "chrome/browser/browser_process.h"
#include "chrome/browser/download/download_prefs.h"
-#include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_manager.h"
+#include "chrome/browser/ui/webui/screenshot_source.h"
#include "chrome/browser/ui/window_snapshot/window_snapshot.h"
-#include "chrome/common/pref_names.h"
#include "content/public/browser/browser_thread.h"
#include "ui/aura/root_window.h"
#include "ui/aura/window.h"
@@ -47,74 +44,6 @@ const int64 kVisualFeedbackLayerDisplayTimeMs = 100;
// more than 1000 to prevent the conflict of filenames.
const int kScreenshotMinimumIntervalInMS = 1000;
-bool ShouldUse24HourClock() {
-#if defined(OS_CHROMEOS)
- Profile* profile = ProfileManager::GetDefaultProfileOrOffTheRecord();
- if (profile) {
- PrefService* pref_service = profile->GetPrefs();
- if (pref_service) {
- return pref_service->GetBoolean(prefs::kUse24HourClock);
- }
- }
-#endif
- return base::GetHourClockType() == base::k24HourClock;
-}
-
-bool AreScreenshotsDisabled() {
- return g_browser_process->local_state()->GetBoolean(
- prefs::kDisableScreenshots);
-}
-
-std::string GetScreenshotBaseFilename() {
- base::Time::Exploded now;
- base::Time::Now().LocalExplode(&now);
-
- // We don't use base/i18n/time_formatting.h here because it doesn't
- // support our format. Don't use ICU either to avoid i18n file names
- // for non-English locales.
- // TODO(mukai): integrate this logic somewhere time_formatting.h
- std::string file_name = base::StringPrintf(
- "Screenshot %d-%02d-%02d at ", now.year, now.month, now.day_of_month);
-
- if (ShouldUse24HourClock()) {
- file_name.append(base::StringPrintf(
- "%02d.%02d.%02d", now.hour, now.minute, now.second));
- } else {
- int hour = now.hour;
- if (hour > 12) {
- hour -= 12;
- } else if (hour == 0) {
- hour = 12;
- }
- file_name.append(base::StringPrintf(
- "%d.%02d.%02d ", hour, now.minute, now.second));
- file_name.append((now.hour >= 12) ? "PM" : "AM");
- }
-
- return file_name;
-}
-
-bool GetScreenshotDirectory(FilePath* directory) {
- if (AreScreenshotsDisabled())
- return false;
-
- bool is_logged_in = true;
-#if defined(OS_CHROMEOS)
- is_logged_in = chromeos::UserManager::Get()->IsUserLoggedIn();
-#endif
-
- if (is_logged_in) {
- DownloadPrefs* download_prefs = DownloadPrefs::FromBrowserContext(
- ash::Shell::GetInstance()->delegate()->GetCurrentBrowserContext());
- *directory = download_prefs->DownloadPath();
- } else {
- if (!file_util::GetTempDir(directory)) {
- LOG(ERROR) << "Failed to find temporary directory.";
- return false;
- }
- }
- return true;
-}
void SaveScreenshotInternal(const FilePath& screenshot_path,
scoped_refptr<base::RefCountedBytes> png_data) {
@@ -185,7 +114,7 @@ bool GrabWindowSnapshot(aura::Window* window,
#if defined(OS_LINUX)
// chrome::GrabWindowSnapshotForUser checks this too, but
// RootWindow::GrabSnapshot does not.
- if (AreScreenshotsDisabled())
+ if (ScreenshotSource::AreScreenshotsDisabled())
return false;
// We use XGetImage() for Linux/ChromeOS for performance reasons.
@@ -208,10 +137,11 @@ ScreenshotTaker::~ScreenshotTaker() {
void ScreenshotTaker::HandleTakeScreenshotForAllRootWindows() {
FilePath screenshot_directory;
- if (!GetScreenshotDirectory(&screenshot_directory))
+ if (!ScreenshotSource::GetScreenshotDirectory(&screenshot_directory))
return;
- std::string screenshot_basename = GetScreenshotBaseFilename();
+ std::string screenshot_basename =
+ ScreenshotSource::GetScreenshotBaseFilename();
ash::Shell::RootWindowList root_windows = ash::Shell::GetAllRootWindows();
for (size_t i = 0; i < root_windows.size(); ++i) {
aura::RootWindow* root_window = root_windows[i];
@@ -236,7 +166,7 @@ void ScreenshotTaker::HandleTakePartialScreenshot(
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
FilePath screenshot_directory;
- if (!GetScreenshotDirectory(&screenshot_directory))
+ if (!ScreenshotSource::GetScreenshotDirectory(&screenshot_directory))
return;
scoped_refptr<base::RefCountedBytes> png_data(new base::RefCountedBytes);
@@ -245,8 +175,9 @@ void ScreenshotTaker::HandleTakePartialScreenshot(
last_screenshot_timestamp_ = base::Time::Now();
DisplayVisualFeedback(rect);
PostSaveScreenshotTask(
- screenshot_directory.AppendASCII(GetScreenshotBaseFilename() + ".png"),
- png_data);
+ screenshot_directory.AppendASCII(
+ ScreenshotSource::GetScreenshotBaseFilename() + ".png"),
+ png_data);
} else {
LOG(ERROR) << "Failed to grab the window screenshot";
}
« no previous file with comments | « no previous file | chrome/browser/ui/webui/feedback_ui.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698