| // 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. |
| |
| #ifndef CHROME_BROWSER_EXTENSIONS_SCRIPT_BUBBLE_CONTROLLER_H_ |
| #define CHROME_BROWSER_EXTENSIONS_SCRIPT_BUBBLE_CONTROLLER_H_ |
| |
| #include <set> |
| #include <string> |
| |
| #include "base/basictypes.h" |
| #include "chrome/browser/extensions/tab_helper.h" |
| #include "content/public/browser/web_contents_observer.h" |
| |
| class ExtensionService; |
| |
| namespace extensions { |
| |
| class ExtensionSystem; |
| |
| // Controls the script bubble in the omnibox, which displays information about |
| // extensions which are interacting with the current tab. |
| class ScriptBubbleController |
| : public TabHelper::ScriptExecutionObserver, |
| public content::WebContentsObserver { |
| public: |
| ScriptBubbleController(content::WebContents* web_contents, |
| TabHelper* tab_helper); |
| virtual ~ScriptBubbleController(); |
| |
| // Returns a set of extension ids for extensions running content scripts. |
| const std::set<std::string>& extensions_running_scripts() { |
| return extensions_running_scripts_; |
| } |
| |
| // TabHelper::ScriptExecutionObserver implementation |
| virtual void OnScriptsExecuted( |
| const content::WebContents* web_contents, |
| const ExecutingScriptsMap& extension_ids, |
| int32 page_id, |
| const GURL& on_url) OVERRIDE; |
| |
| // content::WebContentsObserver implementation. |
| virtual void DidNavigateMainFrame( |
| const content::LoadCommittedDetails& details, |
| const content::FrameNavigateParams& params) OVERRIDE; |
| |
| void OnExtensionUnloaded(const std::string& extension_id); |
| |
| private: |
| // Helper to get the profile of the web contents we're associated with. |
| Profile* profile() const; |
| |
| // Helper to get the extension service for the profile of the web contents |
| // we're associated with. |
| ExtensionService* GetExtensionService() const; |
| |
| // Helper to update the properties of the script bubble to reflect current |
| // internal state. |
| void UpdateScriptBubble(); |
| |
| // The accumulated set of extension IDs that are operating on this tab. |
| std::set<std::string> extensions_running_scripts_; |
| |
| DISALLOW_COPY_AND_ASSIGN(ScriptBubbleController); |
| }; |
| |
| } // namespace extensions |
| |
| #endif // CHROME_BROWSER_EXTENSIONS_SCRIPT_BUBBLE_CONTROLLER_H_ |