summaryrefslogtreecommitdiffstats
path: root/chrome/browser/drive/drive_app_registry.h
diff options
context:
space:
mode:
authorlukasza <lukasza@chromium.org>2015-07-20 13:57:20 -0700
committerCommit bot <commit-bot@chromium.org>2015-07-20 20:58:23 +0000
commit8acc4eb18b6919f36413a10718a607f2a34fb8f6 (patch)
tree1e53fa500119384a12b38075ebcc97a469750dd7 /chrome/browser/drive/drive_app_registry.h
parent1f37aaf390288b2864efe98a07427dbf91771489 (diff)
downloadchromium_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.h160
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_