diff options
author | lukasza <lukasza@chromium.org> | 2015-07-20 13:57:20 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-07-20 20:58:23 +0000 |
commit | 8acc4eb18b6919f36413a10718a607f2a34fb8f6 (patch) | |
tree | 1e53fa500119384a12b38075ebcc97a469750dd7 /chrome/browser/drive/drive_app_registry.h | |
parent | 1f37aaf390288b2864efe98a07427dbf91771489 (diff) | |
download | chromium_src-8acc4eb18b6919f36413a10718a607f2a34fb8f6.zip chromium_src-8acc4eb18b6919f36413a10718a607f2a34fb8f6.tar.gz chromium_src-8acc4eb18b6919f36413a10718a607f2a34fb8f6.tar.bz2 |
Move (most of) chrome/browser/drive into components/drive.
Note that drive_notification_manager_factory is left behind in
chrome/browser/drive. This is because it needs to stay dependent on the
browser. This is okay, because drive_notification_manager_factory is
not needed by drive::FileSystem and other parts of drive libraries that
we want to componentize.
Also note that some things moved to components/drive continue to
have slightly undesirable dependencies:
- Tests are still built and executed as part of the browser test suites.
- drive_uploader.cc depends on content/public/browser/power_save_blocker.h
This means that to use components/drive outside of the browser,
users of components/drive have to provide a no-op implementation
of power_save_blocker.h
The most desirable approach in the long-term would be to componentize
power_save_blocker.h. An alternative would be to continue with
the state introduced by the current changelist (or to introduce
drive-specific abstraction similar to power_save_blocker.h, but
outside of the browser).
- drive_api_util.cc depends on storage/browser/fileapi/file_stream_reader.h
To get rid of this dependency, it is probably best to move
FileStreamMd5Digester class closer to the only point of usage
(c/b/chromeos/extensions/file_manager/private_api_file_system.cc).
Landing via CQ with NOPRESUBMIT=true, because "git cl presubmit" incorrectly
identifies target directory of a dependency (we are depending on
third_party/cacheinvalidation/src/google/cacheinvalidation/types.proto
and including the generated header via google/cacheinvalidation/types.pb.h).
I believe this is a case of crbug.com/448570. All other presubmit checks
are passing AFAIK:
$ git cl presubmit
Running presubmit commit checks ...
** Presubmit ERRORS **
Missing LGTM from OWNERS of dependencies added to DEPS:
'+google/cacheinvalidation/types.pb.h',
Presubmit checks took 2.9s to calculate.
Test steps:
1. Verify that things still build via GYP (and unit tests pass).
$ GYP_DEFINES="use_goma=1 gomadir=... chromeos=1" gclient sync
$ ninja -C out/Debug -j 150 chrome unit_tests \
interactive_ui_tests browser_tests drive
$ out/Debug/unit_tests
2. Verify that things still builds via GN.
$ gn gen out/Default --args='target_os="chromeos" use_goma=true'
$ ninja -C out/Default -j 150 chrome unit_tests \
interactive_ui_tests browser_tests components/drive
TEST=Please see "Test steps" above.
BUG=257943, 498951
NOPRESUBMIT=true
Review URL: https://codereview.chromium.org/1190203002
Cr-Commit-Position: refs/heads/master@{#339512}
Diffstat (limited to 'chrome/browser/drive/drive_app_registry.h')
-rw-r--r-- | chrome/browser/drive/drive_app_registry.h | 160 |
1 files changed, 0 insertions, 160 deletions
diff --git a/chrome/browser/drive/drive_app_registry.h b/chrome/browser/drive/drive_app_registry.h deleted file mode 100644 index 1edad1f..0000000 --- a/chrome/browser/drive/drive_app_registry.h +++ /dev/null @@ -1,160 +0,0 @@ -// Copyright 2014 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. - -#ifndef CHROME_BROWSER_DRIVE_DRIVE_APP_REGISTRY_H_ -#define CHROME_BROWSER_DRIVE_DRIVE_APP_REGISTRY_H_ - -#include <map> -#include <string> -#include <vector> - -#include "base/callback_forward.h" -#include "base/files/file_path.h" -#include "base/memory/scoped_ptr.h" -#include "base/memory/weak_ptr.h" -#include "base/observer_list.h" -#include "base/threading/thread_checker.h" -#include "google_apis/drive/drive_api_error_codes.h" -#include "url/gurl.h" - -namespace google_apis { -class AppList; -} // namespace google_apis - -namespace drive { - -class DriveAppRegistryObserver; -class DriveServiceInterface; - -// Data structure that defines Drive app. See -// https://chrome.google.com/webstore/category/collection/drive_apps for -// Drive apps available on the webstore. -struct DriveAppInfo { - typedef std::vector<std::pair<int, GURL> > IconList; - - DriveAppInfo(); - DriveAppInfo(const std::string& app_id, - const std::string& product_id, - const IconList& app_icons, - const IconList& document_icons, - const std::string& app_name, - const GURL& create_url, - bool is_removable); - ~DriveAppInfo(); - - // Drive app id. - std::string app_id; - // Drive app's product id. This is different from app id that is used inside - // Drive. Product id is an id for the app in webstore; hence, it can be used - // for identifying the same app install as Chrome extension and as Drive app - // at the same time. - std::string product_id; - // Drive application icon URLs for this app, paired with their size (length of - // a side in pixels). - IconList app_icons; - // Drive document icon URLs for this app, paired with their size (length of - // a side in pixels). - IconList document_icons; - // App name. - std::string app_name; - // URL for opening a new file in the app. Empty if the app does not support - // new file creation. - GURL create_url; - // Returns if UninstallApp() is allowed for the app. Built-in apps have this - // field set false. - bool is_removable; -}; - -// Callback type for UninstallApp(). -typedef base::Callback<void(google_apis::DriveApiErrorCode)> UninstallCallback; - -// Keeps the track of installed drive applications in-memory. -class DriveAppRegistry { - public: - explicit DriveAppRegistry(DriveServiceInterface* scheduler); - ~DriveAppRegistry(); - - // Returns a list of Drive app information for the |file_extension| with - // |mime_type|. - void GetAppsForFile(const base::FilePath::StringType& file_extension, - const std::string& mime_type, - std::vector<DriveAppInfo>* apps) const; - - // Returns the list of all Drive apps installed. - void GetAppList(std::vector<DriveAppInfo>* apps) const; - - // Uninstalls the app specified by |app_id|. This method sends requests to the - // remote server, and returns the result to |callback| asynchronously. When - // succeeded, the callback receives HTTP_NO_CONTENT, and error code otherwise. - // |callback| must not be null. - void UninstallApp(const std::string& app_id, - const UninstallCallback& callback); - - // Checks whether UinstallApp is supported. The feature is available only for - // clients with whitelisted API keys (like Official Google Chrome build). - static bool IsAppUninstallSupported(); - - // Updates this registry by fetching the data from the server. - void Update(); - - // Updates this registry from the |app_list|. - void UpdateFromAppList(const google_apis::AppList& app_list); - - void AddObserver(DriveAppRegistryObserver* observer); - void RemoveObserver(DriveAppRegistryObserver* observer); - - private: - // Part of Update(). Runs upon the completion of fetching the Drive apps - // data from the server. - void UpdateAfterGetAppList(google_apis::DriveApiErrorCode gdata_error, - scoped_ptr<google_apis::AppList> app_list); - - // Part of UninstallApp(). Receives the response from the server. - void OnAppUninstalled(const std::string& app_id, - const UninstallCallback& callback, - google_apis::DriveApiErrorCode error); - - // The class is expected to run on UI thread. - base::ThreadChecker thread_checker_; - - // Map of application id to each app's info. - std::map<std::string, DriveAppInfo> all_apps_; - - // Defines mapping between file content type selectors (extensions, MIME - // types) and corresponding app. - typedef std::multimap<std::string, std::string> DriveAppFileSelectorMap; - DriveAppFileSelectorMap extension_map_; - DriveAppFileSelectorMap mimetype_map_; - - DriveServiceInterface* drive_service_; - - bool is_updating_; - - base::ObserverList<DriveAppRegistryObserver> observers_; - - // Note: This should remain the last member so it'll be destroyed and - // invalidate the weak pointers before any other members are destroyed. - base::WeakPtrFactory<DriveAppRegistry> weak_ptr_factory_; - - DISALLOW_COPY_AND_ASSIGN(DriveAppRegistry); -}; - -namespace util { - -// The preferred icon size, which should usually be used for FindPreferredIcon; -const int kPreferredIconSize = 16; - -// Finds an icon in the list of icons. If unable to find an icon of the exact -// size requested, returns one with the next larger size. If all icons are -// smaller than the preferred size, we'll return the largest one available. -// Icons do not have to be sorted by the icon size. If there are no icons in -// the list, returns an empty URL. -GURL FindPreferredIcon(const DriveAppInfo::IconList& icons, - int preferred_size); - -} // namespace util - -} // namespace drive - -#endif // CHROME_BROWSER_DRIVE_DRIVE_APP_REGISTRY_H_ |