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

Side by Side Diff: chrome/browser/extensions/extension_service.h

Issue 22944002: Implementation of the "Redirect URLs to Packaged Apps" feature. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ 5 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_
6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ 6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_
7 7
8 #include <list> 8 #include <list>
9 #include <map> 9 #include <map>
10 #include <set> 10 #include <set>
(...skipping 20 matching lines...) Expand all
31 #include "chrome/browser/extensions/menu_manager.h" 31 #include "chrome/browser/extensions/menu_manager.h"
32 #include "chrome/browser/extensions/pending_extension_manager.h" 32 #include "chrome/browser/extensions/pending_extension_manager.h"
33 #include "chrome/browser/extensions/process_map.h" 33 #include "chrome/browser/extensions/process_map.h"
34 #include "chrome/browser/extensions/update_observer.h" 34 #include "chrome/browser/extensions/update_observer.h"
35 #include "chrome/common/extensions/extension.h" 35 #include "chrome/common/extensions/extension.h"
36 #include "chrome/common/extensions/extension_constants.h" 36 #include "chrome/common/extensions/extension_constants.h"
37 #include "chrome/common/extensions/extension_set.h" 37 #include "chrome/common/extensions/extension_set.h"
38 #include "chrome/common/extensions/manifest.h" 38 #include "chrome/common/extensions/manifest.h"
39 #include "content/public/browser/notification_observer.h" 39 #include "content/public/browser/notification_observer.h"
40 #include "content/public/browser/notification_registrar.h" 40 #include "content/public/browser/notification_registrar.h"
41 #include "ipc/ipc_listener.h"
41 #include "sync/api/string_ordinal.h" 42 #include "sync/api/string_ordinal.h"
42 #include "sync/api/sync_change.h" 43 #include "sync/api/sync_change.h"
43 #include "sync/api/syncable_service.h" 44 #include "sync/api/syncable_service.h"
44 45
45 class CommandLine; 46 class CommandLine;
46 class ExtensionErrorUI; 47 class ExtensionErrorUI;
47 class ExtensionSyncData; 48 class ExtensionSyncData;
48 class ExtensionToolbarModel; 49 class ExtensionToolbarModel;
49 class GURL; 50 class GURL;
50 class Profile; 51 class Profile;
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 131
131 // Returns task runner for crx installation file I/O operations. 132 // Returns task runner for crx installation file I/O operations.
132 virtual base::SequencedTaskRunner* GetFileTaskRunner() = 0; 133 virtual base::SequencedTaskRunner* GetFileTaskRunner() = 0;
133 }; 134 };
134 135
135 // Manages installed and running Chromium extensions. 136 // Manages installed and running Chromium extensions.
136 class ExtensionService 137 class ExtensionService
137 : public ExtensionServiceInterface, 138 : public ExtensionServiceInterface,
138 public extensions::ExternalProviderInterface::VisitorInterface, 139 public extensions::ExternalProviderInterface::VisitorInterface,
139 public content::NotificationObserver, 140 public content::NotificationObserver,
140 public extensions::Blacklist::Observer { 141 public extensions::Blacklist::Observer,
142 public IPC::Listener {
asargent_no_longer_on_chrome 2013/08/14 18:05:12 Since ExtensionService already does a lot of stuff
sergeygs 2013/08/18 11:40:24 It looks to me now that this attempt wasn't viable
141 public: 143 public:
142 // The name of the directory inside the profile where extensions are 144 // The name of the directory inside the profile where extensions are
143 // installed to. 145 // installed to.
144 static const char kInstallDirectoryName[]; 146 static const char kInstallDirectoryName[];
145 147
146 // If auto-updates are turned on, default to running every 5 hours. 148 // If auto-updates are turned on, default to running every 5 hours.
147 static const int kDefaultUpdateFrequencySeconds = 60 * 60 * 5; 149 static const int kDefaultUpdateFrequencySeconds = 60 * 60 * 5;
148 150
149 // The name of the directory inside the profile where per-app local settings 151 // The name of the directory inside the profile where per-app local settings
150 // are stored. 152 // are stored.
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
401 403
402 // Returns true if |url| should get extension api bindings and be permitted 404 // Returns true if |url| should get extension api bindings and be permitted
403 // to make api calls. Note that this is independent of what extension 405 // to make api calls. Note that this is independent of what extension
404 // permissions the given extension has been granted. 406 // permissions the given extension has been granted.
405 bool ExtensionBindingsAllowed(const GURL& url); 407 bool ExtensionBindingsAllowed(const GURL& url);
406 408
407 // Returns true if a normal browser window should avoid showing |url| in a 409 // Returns true if a normal browser window should avoid showing |url| in a
408 // tab. In this case, |url| is also rewritten to an error URL. 410 // tab. In this case, |url| is also rewritten to an error URL.
409 bool ShouldBlockUrlInBrowserTab(GURL* url); 411 bool ShouldBlockUrlInBrowserTab(GURL* url);
410 412
413 // Looks if there is a platform app that's registered itself for handling
414 // a URL pattern(s) that matches |url|. If there is, launches the app, using
415 // the onLaunched event with |url|, |referrerUrl| and the just found
416 // handler ID as launch parameters, and returns true.
417 // Otherwise, returns false.
418 // This direct way of redirecting URLs to apps is for use in browser-
419 // initiated that happen in the browser process (compare to
420 // OnRedirectUrlToApp).
421 bool MaybeRedirectUrlToApp(const GURL& url, const GURL& referrer_url);
422
411 // Called when the initial extensions load has completed. 423 // Called when the initial extensions load has completed.
412 virtual void OnLoadedInstalledExtensions(); 424 virtual void OnLoadedInstalledExtensions();
413 425
414 // Adds |extension| to this ExtensionService and notifies observers that the 426 // Adds |extension| to this ExtensionService and notifies observers that the
415 // extensions have been loaded. 427 // extensions have been loaded.
416 virtual void AddExtension(const extensions::Extension* extension) OVERRIDE; 428 virtual void AddExtension(const extensions::Extension* extension) OVERRIDE;
417 429
418 // Check if we have preferences for the component extension and, if not or if 430 // Check if we have preferences for the component extension and, if not or if
419 // the stored version differs, install the extension (without requirements 431 // the stored version differs, install the extension (without requirements
420 // checking) before calling AddExtension. 432 // checking) before calling AddExtension.
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
673 // until the extension is idle. Tests might not like this behavior, so you can 685 // until the extension is idle. Tests might not like this behavior, so you can
674 // disable it with this method. 686 // disable it with this method.
675 void set_install_updates_when_idle_for_test(bool value) { 687 void set_install_updates_when_idle_for_test(bool value) {
676 install_updates_when_idle_ = value; 688 install_updates_when_idle_ = value;
677 } 689 }
678 690
679 // Adds/Removes update observers. 691 // Adds/Removes update observers.
680 void AddUpdateObserver(extensions::UpdateObserver* observer); 692 void AddUpdateObserver(extensions::UpdateObserver* observer);
681 void RemoveUpdateObserver(extensions::UpdateObserver* observer); 693 void RemoveUpdateObserver(extensions::UpdateObserver* observer);
682 694
695 // IPC::Listener implementation.
696 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
697
683 private: 698 private:
684 // Contains Extension data that can change during the life of the process, 699 // Contains Extension data that can change during the life of the process,
685 // but does not persist across restarts. 700 // but does not persist across restarts.
686 struct ExtensionRuntimeData { 701 struct ExtensionRuntimeData {
687 // True if the background page is ready. 702 // True if the background page is ready.
688 bool background_page_ready; 703 bool background_page_ready;
689 704
690 // True while the extension is being upgraded. 705 // True while the extension is being upgraded.
691 bool being_upgraded; 706 bool being_upgraded;
692 707
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
820 void OnNeedsToGarbageCollectIsolatedStorage(); 835 void OnNeedsToGarbageCollectIsolatedStorage();
821 836
822 // extensions::Blacklist::Observer implementation. 837 // extensions::Blacklist::Observer implementation.
823 virtual void OnBlacklistUpdated() OVERRIDE; 838 virtual void OnBlacklistUpdated() OVERRIDE;
824 839
825 // Manages the blacklisted extensions, intended as callback from 840 // Manages the blacklisted extensions, intended as callback from
826 // Blacklist::GetBlacklistedIDs. 841 // Blacklist::GetBlacklistedIDs.
827 void ManageBlacklist(const std::set<std::string>& old_blacklisted_ids, 842 void ManageBlacklist(const std::set<std::string>& old_blacklisted_ids,
828 const std::set<std::string>& new_blacklisted_ids); 843 const std::set<std::string>& new_blacklisted_ids);
829 844
845 // Launches an app that has |app_id|, using the onLaunched event with
846 // |handler_id|, |url| and |referrerUrl| as launch parameters.
847 // This is registered to listen to the respective IPC control message
848 // from renderer processes to provide a way of redirecting URLs to apps
849 // to them (compare to MaybeRedirectUrlToApp).
850 void OnRedirectUrlToApp(const std::string& app_id,
851 const std::string& handler_id,
852 const GURL& url,
853 const GURL& referrer_url);
854
830 // Controls if installs are delayed. See comment for |installs_delayed_|. 855 // Controls if installs are delayed. See comment for |installs_delayed_|.
831 void set_installs_delayed(bool value) { installs_delayed_ = value; } 856 void set_installs_delayed(bool value) { installs_delayed_ = value; }
832 bool installs_delayed() const { return installs_delayed_; } 857 bool installs_delayed() const { return installs_delayed_; }
833 858
834 // The normal profile associated with this ExtensionService. 859 // The normal profile associated with this ExtensionService.
835 Profile* profile_; 860 Profile* profile_;
836 861
837 // The ExtensionSystem for the profile above. 862 // The ExtensionSystem for the profile above.
838 extensions::ExtensionSystem* system_; 863 extensions::ExtensionSystem* system_;
839 864
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
988 ObserverList<extensions::UpdateObserver, true> update_observers_; 1013 ObserverList<extensions::UpdateObserver, true> update_observers_;
989 1014
990 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, 1015 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest,
991 InstallAppsWithUnlimtedStorage); 1016 InstallAppsWithUnlimtedStorage);
992 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, 1017 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest,
993 InstallAppsAndCheckStorageProtection); 1018 InstallAppsAndCheckStorageProtection);
994 DISALLOW_COPY_AND_ASSIGN(ExtensionService); 1019 DISALLOW_COPY_AND_ASSIGN(ExtensionService);
995 }; 1020 };
996 1021
997 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ 1022 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698