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

Unified Diff: chrome/browser/ui/webui/slideshow_ui.cc

Issue 6873100: Moving slideshow to the filebrowser. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 8 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/ui/webui/slideshow_ui.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/webui/slideshow_ui.cc
===================================================================
--- chrome/browser/ui/webui/slideshow_ui.cc (revision 82643)
+++ chrome/browser/ui/webui/slideshow_ui.cc (working copy)
@@ -1,284 +0,0 @@
-// Copyright (c) 2011 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.
-
-#include "chrome/browser/ui/webui/slideshow_ui.h"
-
-#include "base/callback.h"
-#include "base/memory/singleton.h"
-#include "base/memory/weak_ptr.h"
-#include "base/message_loop.h"
-#include "base/path_service.h"
-#include "base/string_piece.h"
-#include "base/string_util.h"
-#include "base/threading/thread.h"
-#include "base/time.h"
-#include "base/utf_string_conversions.h"
-#include "base/values.h"
-#include "chrome/browser/history/history_types.h"
-#include "chrome/browser/metrics/user_metrics.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/ui/webui/favicon_source.h"
-#include "chrome/common/chrome_paths.h"
-#include "chrome/common/jstemplate_builder.h"
-#include "chrome/common/url_constants.h"
-#include "content/browser/browser_thread.h"
-#include "content/browser/tab_contents/tab_contents.h"
-#include "grit/browser_resources.h"
-#include "grit/chromium_strings.h"
-#include "grit/generated_resources.h"
-#include "grit/locale_settings.h"
-#include "net/base/directory_lister.h"
-#include "net/base/escape.h"
-#include "ui/base/resource/resource_bundle.h"
-
-static const char kPropertyPath[] = "path";
-static const char kPropertyTitle[] = "title";
-static const char kPropertyOffset[] = "currentOffset";
-static const char kPropertyDirectory[] = "isDirectory";
-
-class SlideshowUIHTMLSource : public ChromeURLDataManager::DataSource {
- public:
- SlideshowUIHTMLSource();
-
- // Called when the network layer has requested a resource underneath
- // the path we registered.
- virtual void StartDataRequest(const std::string& path,
- bool is_incognito,
- int request_id);
- virtual std::string GetMimeType(const std::string&) const {
- return "text/html";
- }
-
- private:
- ~SlideshowUIHTMLSource() {}
-
- DISALLOW_COPY_AND_ASSIGN(SlideshowUIHTMLSource);
-};
-
-// The handler for Javascript messages related to the "slideshow" view.
-class SlideshowHandler : public net::DirectoryLister::DirectoryListerDelegate,
- public WebUIMessageHandler,
- public base::SupportsWeakPtr<SlideshowHandler> {
- public:
- SlideshowHandler();
- virtual ~SlideshowHandler();
-
- // Init work after Attach.
- void Init();
-
- // DirectoryLister::DirectoryListerDelegate methods:
- virtual void OnListFile(
- const net::DirectoryLister::DirectoryListerData& data);
- virtual void OnListDone(int error);
-
- // WebUIMessageHandler implementation.
- virtual WebUIMessageHandler* Attach(WebUI* web_ui);
- virtual void RegisterMessages();
-
- void GetChildrenForPath(const FilePath& path, bool is_refresh);
-
- // Callback for the "getChildren" message.
- void HandleGetChildren(const ListValue* args);
-
- void HandleRefreshDirectory(const ListValue* args);
-
- private:
- bool PathIsImageFile(const char* filename);
-
- scoped_ptr<ListValue> filelist_value_;
- FilePath currentpath_;
- FilePath originalpath_;
- Profile* profile_;
- int counter_;
- int currentOffset_;
- scoped_refptr<net::DirectoryLister> lister_;
- bool is_refresh_;
-
- DISALLOW_COPY_AND_ASSIGN(SlideshowHandler);
-};
-
-////////////////////////////////////////////////////////////////////////////////
-//
-// SlideshowHTMLSource
-//
-////////////////////////////////////////////////////////////////////////////////
-
-SlideshowUIHTMLSource::SlideshowUIHTMLSource()
- : DataSource(chrome::kChromeUISlideshowHost, MessageLoop::current()) {
-}
-
-void SlideshowUIHTMLSource::StartDataRequest(const std::string& path,
- bool is_incognito,
- int request_id) {
- DictionaryValue localized_strings;
- // TODO(dhg): Add stirings to localized strings, also add more strings
- // that are currently hardcoded.
- SetFontAndTextDirection(&localized_strings);
-
- static const base::StringPiece slideshow_html(
- ResourceBundle::GetSharedInstance().GetRawDataResource(
- IDR_SLIDESHOW_HTML));
- const std::string full_html = jstemplate_builder::GetI18nTemplateHtml(
- slideshow_html, &localized_strings);
-
- scoped_refptr<RefCountedBytes> html_bytes(new RefCountedBytes);
- html_bytes->data.resize(full_html.size());
- std::copy(full_html.begin(), full_html.end(), html_bytes->data.begin());
-
- SendResponse(request_id, html_bytes);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-//
-// SlideshowHandler
-//
-////////////////////////////////////////////////////////////////////////////////
-SlideshowHandler::SlideshowHandler()
- : profile_(NULL),
- is_refresh_(false) {
- lister_ = NULL;
-}
-
-SlideshowHandler::~SlideshowHandler() {
- if (lister_.get()) {
- lister_->Cancel();
- lister_->set_delegate(NULL);
- }
-}
-
-WebUIMessageHandler* SlideshowHandler::Attach(WebUI* web_ui) {
- profile_ = web_ui->GetProfile();
- // Create our favicon data source.
- profile_->GetChromeURLDataManager()->AddDataSource(
- new FaviconSource(profile_, FaviconSource::FAVICON));
- return WebUIMessageHandler::Attach(web_ui);
-}
-
-void SlideshowHandler::Init() {
-}
-
-void SlideshowHandler::RegisterMessages() {
- web_ui_->RegisterMessageCallback("getChildren",
- NewCallback(this, &SlideshowHandler::HandleGetChildren));
- web_ui_->RegisterMessageCallback("refreshDirectory",
- NewCallback(this, &SlideshowHandler::HandleRefreshDirectory));
-}
-
-void SlideshowHandler::HandleRefreshDirectory(const ListValue* args) {
-#if defined(OS_CHROMEOS)
- std::string path = UTF16ToUTF8(ExtractStringValue(args));
- GetChildrenForPath(FilePath(path), true);
-#endif
-}
-
-void SlideshowHandler::GetChildrenForPath(const FilePath& path,
- bool is_refresh) {
- filelist_value_.reset(new ListValue());
- currentpath_ = path;
-
- if (lister_.get()) {
- lister_->Cancel();
- lister_->set_delegate(NULL);
- lister_ = NULL;
- }
-
- is_refresh_ = is_refresh;
- if (file_util::EnsureEndsWithSeparator(&currentpath_) &&
- currentpath_.IsAbsolute()) {
- lister_ = new net::DirectoryLister(currentpath_, this);
- } else {
- originalpath_ = currentpath_;
- currentpath_ = currentpath_.DirName();
- lister_ = new net::DirectoryLister(currentpath_, this);
- }
- counter_ = 0;
- currentOffset_ = -1;
- lister_->Start();
-}
-
-void SlideshowHandler::HandleGetChildren(const ListValue* args) {
-#if defined(OS_CHROMEOS)
- filelist_value_.reset(new ListValue());
- std::string path = UTF16ToUTF8(ExtractStringValue(args));
- GetChildrenForPath(FilePath(path), false);
-#endif
-}
-
-bool SlideshowHandler::PathIsImageFile(const char* filename) {
-#if defined(OS_CHROMEOS)
- FilePath file = FilePath(filename);
- std::string ext = file.Extension();
- ext = StringToLowerASCII(ext);
- if (ext == ".jpg" ||
- ext == ".jpeg" ||
- ext == ".png" ||
- ext == ".gif") {
- return true;
- } else {
- return false;
- }
-#else
- return false;
-#endif
-}
-
-void SlideshowHandler::OnListFile(
- const net::DirectoryLister::DirectoryListerData& data) {
-#if defined(OS_CHROMEOS)
- if (data.info.filename[0] == '.') {
- return;
- }
- if (!PathIsImageFile(data.info.filename.c_str())) {
- return;
- }
-
- DictionaryValue* file_value = new DictionaryValue();
-
- file_value->SetString(kPropertyTitle, data.info.filename);
- file_value->SetString(kPropertyPath,
- currentpath_.Append(data.info.filename).value());
- file_value->SetBoolean(kPropertyDirectory, S_ISDIR(data.info.stat.st_mode));
- filelist_value_->Append(file_value);
- std::string val;
- file_value->GetString(kPropertyTitle, &val);
- if (val == originalpath_.BaseName().value()) {
- currentOffset_ = counter_;
- }
- counter_++;
-#endif
-}
-
-void SlideshowHandler::OnListDone(int error) {
- DictionaryValue info_value;
- counter_ = 0;
- if (!(file_util::EnsureEndsWithSeparator(&originalpath_) &&
- originalpath_.IsAbsolute()) &&
- currentOffset_ != -1) {
- info_value.SetInteger(kPropertyOffset, currentOffset_);
- }
- if (is_refresh_) {
- info_value.SetString("functionCall", "refresh");
- } else {
- info_value.SetString("functionCall", "getChildren");
- }
- info_value.SetString(kPropertyPath, currentpath_.value());
- web_ui_->CallJavascriptFunction("browseFileResult",
- info_value, *(filelist_value_.get()));
-}
-
-////////////////////////////////////////////////////////////////////////////////
-//
-// SlideshowUI
-//
-////////////////////////////////////////////////////////////////////////////////
-
-SlideshowUI::SlideshowUI(TabContents* contents) : WebUI(contents) {
- SlideshowHandler* handler = new SlideshowHandler();
- AddMessageHandler((handler)->Attach(this));
- handler->Init();
- SlideshowUIHTMLSource* html_source = new SlideshowUIHTMLSource();
-
- // Set up the chrome://slideshow/ source.
- contents->profile()->GetChromeURLDataManager()->AddDataSource(html_source);
-}
« no previous file with comments | « chrome/browser/ui/webui/slideshow_ui.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698