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

Unified Diff: chrome/browser/chromeos/drive/drive_webapps_registry.cc

Issue 15932010: drive: Rename DriveWebApp* to DriveApp (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address comments Created 7 years, 7 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
Index: chrome/browser/chromeos/drive/drive_webapps_registry.cc
diff --git a/chrome/browser/chromeos/drive/drive_webapps_registry.cc b/chrome/browser/chromeos/drive/drive_webapps_registry.cc
deleted file mode 100644
index 2923e5827b044fe793ebb13386c71b792f15e358..0000000000000000000000000000000000000000
--- a/chrome/browser/chromeos/drive/drive_webapps_registry.cc
+++ /dev/null
@@ -1,276 +0,0 @@
-// Copyright (c) 2012 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/chromeos/drive/drive_webapps_registry.h"
-
-#include <algorithm>
-#include <string>
-#include <utility>
-#include <vector>
-
-#include "base/files/file_path.h"
-#include "base/string_util.h"
-#include "base/utf_string_conversions.h"
-#include "chrome/browser/chromeos/drive/file_system_util.h"
-#include "chrome/browser/chromeos/drive/job_scheduler.h"
-#include "chrome/browser/google_apis/drive_api_parser.h"
-#include "content/public/browser/browser_thread.h"
-
-using content::BrowserThread;
-
-namespace drive {
-
-namespace {
-
-// WebApp store URL prefix.
-const char kStoreProductUrl[] = "https://chrome.google.com/webstore/";
-
-// Extracts Web store id from its web store URL.
-std::string GetWebStoreIdFromUrl(const GURL& url) {
- if (!StartsWithASCII(url.spec(), kStoreProductUrl, false)) {
- LOG(WARNING) << "Unrecognized product URL " << url.spec();
- return std::string();
- }
-
- base::FilePath path(url.path());
- std::vector<base::FilePath::StringType> components;
- path.GetComponents(&components);
- DCHECK_LE(2U, components.size()); // Coming from kStoreProductUrl
-
- // Return the last part of the path
- return components[components.size() - 1];
-}
-
-// TODO(kochi): This is duplicate from gdata_wapi_parser.cc.
-bool SortBySize(const google_apis::InstalledApp::IconList::value_type& a,
- const google_apis::InstalledApp::IconList::value_type& b) {
- return a.first < b.first;
-}
-
-} // namespace
-
-// DriveWebAppInfo struct implementation.
-
-DriveWebAppInfo::DriveWebAppInfo(
- const std::string& app_id,
- const google_apis::InstalledApp::IconList& app_icons,
- const google_apis::InstalledApp::IconList& document_icons,
- const std::string& web_store_id,
- const string16& app_name,
- const string16& object_type,
- bool is_primary_selector)
- : app_id(app_id),
- app_icons(app_icons),
- document_icons(document_icons),
- web_store_id(web_store_id),
- app_name(app_name),
- object_type(object_type),
- is_primary_selector(is_primary_selector) {
-}
-
-DriveWebAppInfo::~DriveWebAppInfo() {
-}
-
-// FileSystem::WebAppFileSelector struct implementation.
-
-DriveWebAppsRegistry::WebAppFileSelector::WebAppFileSelector(
- const GURL& product_link,
- const google_apis::InstalledApp::IconList& app_icons,
- const google_apis::InstalledApp::IconList& document_icons,
- const string16& object_type,
- const std::string& app_id,
- bool is_primary_selector)
- : product_link(product_link),
- app_icons(app_icons),
- document_icons(document_icons),
- object_type(object_type),
- app_id(app_id),
- is_primary_selector(is_primary_selector) {
-}
-
-DriveWebAppsRegistry::WebAppFileSelector::~WebAppFileSelector() {
-}
-
-// DriveWebAppsRegistry implementation.
-
-DriveWebAppsRegistry::DriveWebAppsRegistry(JobScheduler* scheduler)
- : scheduler_(scheduler),
- weak_ptr_factory_(this) {
-}
-
-DriveWebAppsRegistry::~DriveWebAppsRegistry() {
- STLDeleteValues(&webapp_extension_map_);
- STLDeleteValues(&webapp_mimetypes_map_);
-}
-
-void DriveWebAppsRegistry::GetWebAppsForFile(
- const base::FilePath& file,
- const std::string& mime_type,
- ScopedVector<DriveWebAppInfo>* apps) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
-
- SelectorWebAppList result_map;
- if (!file.empty()) {
- base::FilePath::StringType extension = file.Extension();
- if (extension.size() < 2)
- return;
-
- extension = extension.substr(1);
- if (!extension.empty())
- FindWebAppsForSelector(extension, webapp_extension_map_, &result_map);
- }
-
- if (!mime_type.empty())
- FindWebAppsForSelector(mime_type, webapp_mimetypes_map_, &result_map);
-
- // Insert found web apps into |apps|, but skip duplicate results.
- std::set<std::string> inserted_app_ids;
- for (SelectorWebAppList::const_iterator it = result_map.begin();
- it != result_map.end(); ++it) {
- if (inserted_app_ids.find(it->second->app_id) == inserted_app_ids.end()) {
- inserted_app_ids.insert(it->second->app_id);
- apps->push_back(it->second);
- }
- }
-}
-
-void DriveWebAppsRegistry::Update() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
-
- scheduler_->GetAppList(
- base::Bind(&DriveWebAppsRegistry::UpdateAfterGetAppList,
- weak_ptr_factory_.GetWeakPtr()));
-}
-
-void DriveWebAppsRegistry::UpdateAfterGetAppList(
- google_apis::GDataErrorCode gdata_error,
- scoped_ptr<google_apis::AppList> app_list) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
-
- FileError error = util::GDataToFileError(gdata_error);
- if (error != FILE_ERROR_OK) {
- // Failed to fetch the data from the server. We can do nothing here.
- return;
- }
-
- DCHECK(app_list);
-
- url_to_name_map_.clear();
- STLDeleteValues(&webapp_extension_map_);
- STLDeleteValues(&webapp_mimetypes_map_);
- for (size_t i = 0; i < app_list->items().size(); ++i) {
- const google_apis::AppResource& app = *app_list->items()[i];
- if (app.product_url().is_empty())
- continue;
-
- google_apis::InstalledApp::IconList app_icons;
- google_apis::InstalledApp::IconList document_icons;
- for (size_t j = 0; j < app.icons().size(); ++j) {
- const google_apis::DriveAppIcon& icon = *app.icons()[j];
- if (icon.icon_url().is_empty())
- continue;
- if (icon.category() == google_apis::DriveAppIcon::APPLICATION)
- app_icons.push_back(std::make_pair(icon.icon_side_length(),
- icon.icon_url()));
- if (icon.category() == google_apis::DriveAppIcon::DOCUMENT)
- document_icons.push_back(std::make_pair(icon.icon_side_length(),
- icon.icon_url()));
- }
- std::sort(app_icons.begin(), app_icons.end(), SortBySize);
- std::sort(document_icons.begin(), document_icons.end(), SortBySize);
-
- url_to_name_map_.insert(
- std::make_pair(app.product_url(), app.name()));
- AddAppSelectorList(app.product_url(),
- app_icons,
- document_icons,
- app.object_type(),
- app.application_id(),
- true, // primary
- app.primary_mimetypes(),
- &webapp_mimetypes_map_);
- AddAppSelectorList(app.product_url(),
- app_icons,
- document_icons,
- app.object_type(),
- app.application_id(),
- false, // primary
- app.secondary_mimetypes(),
- &webapp_mimetypes_map_);
- AddAppSelectorList(app.product_url(),
- app_icons,
- document_icons,
- app.object_type(),
- app.application_id(),
- true, // primary
- app.primary_file_extensions(),
- &webapp_extension_map_);
- AddAppSelectorList(app.product_url(),
- app_icons,
- document_icons,
- app.object_type(),
- app.application_id(),
- false, // primary
- app.secondary_file_extensions(),
- &webapp_extension_map_);
- }
-}
-
-// static.
-void DriveWebAppsRegistry::AddAppSelectorList(
- const GURL& product_link,
- const google_apis::InstalledApp::IconList& app_icons,
- const google_apis::InstalledApp::IconList& document_icons,
- const std::string& object_type,
- const std::string& app_id,
- bool is_primary_selector,
- const ScopedVector<std::string>& selectors,
- WebAppFileSelectorMap* map) {
- for (ScopedVector<std::string>::const_iterator it = selectors.begin();
- it != selectors.end(); ++it) {
- std::string* value = *it;
- map->insert(std::make_pair(
- *value, new WebAppFileSelector(product_link,
- app_icons,
- document_icons,
- UTF8ToUTF16(object_type),
- app_id,
- is_primary_selector)));
- }
-}
-
-void DriveWebAppsRegistry::FindWebAppsForSelector(
- const std::string& file_selector,
- const WebAppFileSelectorMap& map,
- SelectorWebAppList* apps) {
- for (WebAppFileSelectorMap::const_iterator it = map.find(file_selector);
- it != map.end() && it->first == file_selector; ++it) {
- const WebAppFileSelector* web_app = it->second;
- std::map<GURL, std::string>::const_iterator product_iter =
- url_to_name_map_.find(web_app->product_link);
- if (product_iter == url_to_name_map_.end()) {
- NOTREACHED();
- continue;
- }
-
- std::string web_store_id = GetWebStoreIdFromUrl(web_app->product_link);
- if (web_store_id.empty())
- continue;
-
- if (apps->find(web_app) != apps->end())
- continue;
-
- apps->insert(std::make_pair(
- web_app,
- new DriveWebAppInfo(web_app->app_id,
- web_app->app_icons,
- web_app->document_icons,
- web_store_id,
- UTF8ToUTF16(product_iter->second), // app name.
- web_app->object_type,
- web_app->is_primary_selector)));
- }
-}
-
-} // namespace drive

Powered by Google App Engine
This is Rietveld 408576698