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

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

Issue 923463003: [Extensions] Remove the Infobar API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comments Created 5 years, 10 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
« no previous file with comments | « no previous file | chrome/browser/extensions/extension_infobar_delegate.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_INFOBAR_DELEGATE_H_
6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_INFOBAR_DELEGATE_H_
7
8 #include "base/memory/scoped_ptr.h"
9 #include "base/scoped_observer.h"
10 #include "components/infobars/core/confirm_infobar_delegate.h"
11 #include "content/public/browser/notification_observer.h"
12 #include "content/public/browser/notification_registrar.h"
13 #include "extensions/browser/extension_registry_observer.h"
14
15 class Browser;
16 class GURL;
17
18 namespace content {
19 class WebContents;
20 }
21
22 namespace extensions {
23 class Extension;
24 class ExtensionRegistry;
25 class ExtensionViewHost;
26 }
27
28 // The InfobarDelegate for creating and managing state for the ExtensionInfobar
29 // plus monitor when the extension goes away.
30 class ExtensionInfoBarDelegate : public infobars::InfoBarDelegate,
31 public content::NotificationObserver,
32 public extensions::ExtensionRegistryObserver {
33 public:
34 ~ExtensionInfoBarDelegate() override;
35
36 // Creates an extension infobar and delegate and adds the infobar to the
37 // infobar service for |web_contents|.
38 static void Create(content::WebContents* web_contents,
39 Browser* browser,
40 const extensions::Extension* extension,
41 const GURL& url,
42 int height);
43
44 const extensions::Extension* extension() { return extension_; }
45 extensions::ExtensionViewHost* extension_view_host() {
46 return extension_view_host_.get();
47 }
48 const extensions::ExtensionViewHost* extension_view_host() const {
49 return extension_view_host_.get();
50 }
51
52 int height() { return height_; }
53
54 bool closing() const { return closing_; }
55
56 // Returns the WebContents associated with the ExtensionInfoBarDelegate.
57 content::WebContents* GetWebContents();
58
59 private:
60 ExtensionInfoBarDelegate(Browser* browser,
61 const extensions::Extension* extension,
62 const GURL& url,
63 content::WebContents* web_contents,
64 int height);
65
66 // Returns an extension infobar that owns |delegate|.
67 static scoped_ptr<infobars::InfoBar> CreateInfoBar(
68 scoped_ptr<ExtensionInfoBarDelegate> delegate);
69
70 // InfoBarDelegate.
71 bool EqualsDelegate(infobars::InfoBarDelegate* delegate) const override;
72 void InfoBarDismissed() override;
73 Type GetInfoBarType() const override;
74 ExtensionInfoBarDelegate* AsExtensionInfoBarDelegate() override;
75
76 // content::NotificationObserver.
77 void Observe(int type,
78 const content::NotificationSource& source,
79 const content::NotificationDetails& details) override;
80
81 // extensions::ExtensionRegistryObserver.
82 void OnExtensionUnloaded(
83 content::BrowserContext* browser_context,
84 const extensions::Extension* extension,
85 extensions::UnloadedExtensionInfo::Reason reason) override;
86
87 #if defined(TOOLKIT_VIEWS)
88 Browser* browser_; // We pass this to the ExtensionInfoBar.
89 #endif
90
91 // The extension host we are showing the InfoBar for.
92 // TODO(pkasting): Should this live on the InfoBar instead?
93 scoped_ptr<extensions::ExtensionViewHost> extension_view_host_;
94
95 const extensions::Extension* extension_;
96 content::NotificationRegistrar registrar_;
97
98 ScopedObserver<extensions::ExtensionRegistry,
99 extensions::ExtensionRegistryObserver>
100 extension_registry_observer_;
101
102 // The requested height of the infobar (in pixels).
103 int height_;
104
105 // Whether we are currently animating to close. This is used to ignore
106 // ExtensionView::PreferredSizeChanged notifications.
107 bool closing_;
108
109 DISALLOW_COPY_AND_ASSIGN(ExtensionInfoBarDelegate);
110 };
111
112 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_INFOBAR_DELEGATE_H_
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/extensions/extension_infobar_delegate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698