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

Unified Diff: chrome/browser/user_style_sheet_watcher.cc

Issue 799005: Connect UserStyleSheetWatcher to FileWatcher to have changes to (Closed)
Patch Set: rebase Created 10 years, 9 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 | « chrome/browser/user_style_sheet_watcher.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/user_style_sheet_watcher.cc
diff --git a/chrome/browser/user_style_sheet_watcher.cc b/chrome/browser/user_style_sheet_watcher.cc
index 2d3e945343515962daebbbc7c8664afa9fff9b95..2bc95688861f5f9621fceef47f0fe8e14e3a2738 100644
--- a/chrome/browser/user_style_sheet_watcher.cc
+++ b/chrome/browser/user_style_sheet_watcher.cc
@@ -9,6 +9,15 @@
#include "chrome/common/notification_service.h"
#include "chrome/common/notification_type.h"
+namespace {
+
+// The subdirectory of the profile that contains the style sheet.
+const char kStyleSheetDir[] = "User StyleSheets";
+// The filename of the stylesheet.
+const char kUserStyleSheetFile[] = "Custom.css";
+
+} // namespace
+
UserStyleSheetWatcher::UserStyleSheetWatcher(const FilePath& profile_path)
: profile_path_(profile_path),
has_loaded_(false) {
@@ -33,6 +42,12 @@ void UserStyleSheetWatcher::Observe(NotificationType type,
registrar_.RemoveAll();
}
+void UserStyleSheetWatcher::OnFileChanged(const FilePath& path) {
+ ChromeThread::PostTask(ChromeThread::FILE, FROM_HERE,
+ NewRunnableMethod(this, &UserStyleSheetWatcher::LoadStyleSheet,
+ profile_path_));
+}
+
void UserStyleSheetWatcher::Init() {
ChromeThread::PostTask(ChromeThread::FILE, FROM_HERE,
NewRunnableMethod(this, &UserStyleSheetWatcher::LoadStyleSheet,
@@ -43,20 +58,20 @@ void UserStyleSheetWatcher::LoadStyleSheet(const FilePath& profile_path) {
DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE));
// We keep the user style sheet in a subdir so we can watch for changes
// to the file.
- FilePath style_sheet_dir = profile_path.AppendASCII("User StyleSheets");
+ FilePath style_sheet_dir = profile_path.AppendASCII(kStyleSheetDir);
if (!file_util::DirectoryExists(style_sheet_dir)) {
if (!file_util::CreateDirectory(style_sheet_dir))
return;
}
// Create the file if it doesn't exist.
- FilePath css_file = style_sheet_dir.AppendASCII("Custom.css");
+ FilePath css_file = style_sheet_dir.AppendASCII(kUserStyleSheetFile);
if (!file_util::PathExists(css_file))
file_util::WriteFile(css_file, "", 0);
std::string css;
bool rv = file_util::ReadFileToString(css_file, &css);
GURL style_sheet_url;
- if (rv) {
+ if (rv && !css.empty()) {
std::string css_base64;
rv = base::Base64Encode(css, &css_base64);
if (rv) {
@@ -68,6 +83,12 @@ void UserStyleSheetWatcher::LoadStyleSheet(const FilePath& profile_path) {
ChromeThread::PostTask(ChromeThread::UI, FROM_HERE,
NewRunnableMethod(this, &UserStyleSheetWatcher::SetStyleSheet,
style_sheet_url));
+
+ if (!file_watcher_.get()) {
+ file_watcher_.reset(new FileWatcher);
+ file_watcher_->Watch(profile_path_.AppendASCII(kStyleSheetDir)
+ .AppendASCII(kUserStyleSheetFile), this);
+ }
}
void UserStyleSheetWatcher::SetStyleSheet(const GURL& url) {
« no previous file with comments | « chrome/browser/user_style_sheet_watcher.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698