// Copyright (c) 2013 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_EXTENSIONS_SUSPICIOUS_EXTENSION_BUBBLE_CONTROLLER_H_ #define CHROME_BROWSER_EXTENSIONS_SUSPICIOUS_EXTENSION_BUBBLE_CONTROLLER_H_ #include #include "chrome/browser/extensions/api/profile_keyed_api_factory.h" #include "extensions/common/extension.h" class Browser; class ExtensionService; namespace extensions { class SuspiciousExtensionBubble; class SuspiciousExtensionBubbleController : public ProfileKeyedAPI { public: explicit SuspiciousExtensionBubbleController(Profile* profile); virtual ~SuspiciousExtensionBubbleController(); // ProfileKeyedAPI implementation. static ProfileKeyedAPIFactory< SuspiciousExtensionBubbleController>* GetFactoryInstance(); // Convenience method to get the SuspiciousExtensionBubbleController for a // profile. static SuspiciousExtensionBubbleController* Get(Profile* profile); // Check for suspicious extensions, returns true if found. bool HasSuspiciousExtensions(); // Sets up the callbacks and shows the bubble. void Show(SuspiciousExtensionBubble* bubble); // Text for various UI labels shown in the bubble. string16 GetTitle(); string16 GetMessageBody(); string16 GetOverflowText(const string16& overflow_count); string16 GetLearnMoreLabel(); string16 GetDismissButtonLabel(); // Returns a vector of names of suspicious extensions found. std::vector GetSuspiciousExtensionNames(); // Callbacks from bubble. Declared virtual for testing purposes. virtual void OnBubbleDismiss(); virtual void OnLinkClicked(); private: friend class ProfileKeyedAPIFactory; // ProfileKeyedAPI implementation. static const char* service_name() { return "SuspiciousExtensionBubbleController"; } static const bool kServiceRedirectedInIncognito = true; // Mark all extensions found as acknowledged (don't need to warn about them // again). void AcknowledgeWipeout(); // The list of suspicious extensions found. Reset at the beginning of each // call to FoundSuspiciousExtensions. ExtensionIdList suspicious_extensions_; // Our extension service. Weak, not owned by us. ExtensionService* service_; // A weak pointer to the profile we are associated with. Not owned by us. Profile* profile_; // This object only checks once for suspicious extensions because the dataset // doesn't change after startup. bool has_notified_; DISALLOW_COPY_AND_ASSIGN(SuspiciousExtensionBubbleController); }; template <> void ProfileKeyedAPIFactory< SuspiciousExtensionBubbleController>::DeclareFactoryDependencies(); } // namespace extensions #endif // CHROME_BROWSER_EXTENSIONS_SUSPICIOUS_EXTENSION_BUBBLE_CONTROLLER_H_