OLD | NEW |
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_API_IDENTITY_WEB_AUTH_FLOW_H_ | 5 #ifndef CHROME_BROWSER_EXTENSIONS_API_IDENTITY_WEB_AUTH_FLOW_H_ |
6 #define CHROME_BROWSER_EXTENSIONS_API_IDENTITY_WEB_AUTH_FLOW_H_ | 6 #define CHROME_BROWSER_EXTENSIONS_API_IDENTITY_WEB_AUTH_FLOW_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "apps/app_window_registry.h" | |
11 #include "content/public/browser/notification_observer.h" | 10 #include "content/public/browser/notification_observer.h" |
12 #include "content/public/browser/notification_registrar.h" | 11 #include "content/public/browser/notification_registrar.h" |
13 #include "content/public/browser/web_contents_observer.h" | 12 #include "content/public/browser/web_contents_observer.h" |
| 13 #include "extensions/browser/app_window/app_window_registry.h" |
14 #include "ui/gfx/rect.h" | 14 #include "ui/gfx/rect.h" |
15 #include "url/gurl.h" | 15 #include "url/gurl.h" |
16 | 16 |
17 class Profile; | 17 class Profile; |
18 class WebAuthFlowTest; | 18 class WebAuthFlowTest; |
19 | 19 |
20 namespace content { | 20 namespace content { |
21 class NotificationDetails; | 21 class NotificationDetails; |
22 class NotificationSource; | 22 class NotificationSource; |
23 class RenderViewHost; | 23 class RenderViewHost; |
(...skipping 14 matching lines...) Expand all Loading... |
38 // | 38 // |
39 // The window is not displayed until the first page load | 39 // The window is not displayed until the first page load |
40 // completes. This allows the flow to complete without flashing a | 40 // completes. This allows the flow to complete without flashing a |
41 // window on screen if the provider immediately redirects to the | 41 // window on screen if the provider immediately redirects to the |
42 // target URL. | 42 // target URL. |
43 // | 43 // |
44 // A WebAuthFlow can be started in Mode::SILENT, which never displays | 44 // A WebAuthFlow can be started in Mode::SILENT, which never displays |
45 // a window. If a window would be required, the flow fails. | 45 // a window. If a window would be required, the flow fails. |
46 class WebAuthFlow : public content::NotificationObserver, | 46 class WebAuthFlow : public content::NotificationObserver, |
47 public content::WebContentsObserver, | 47 public content::WebContentsObserver, |
48 public apps::AppWindowRegistry::Observer { | 48 public AppWindowRegistry::Observer { |
49 public: | 49 public: |
50 enum Mode { | 50 enum Mode { |
51 INTERACTIVE, // Show UI to the user if necessary. | 51 INTERACTIVE, // Show UI to the user if necessary. |
52 SILENT // No UI should be shown. | 52 SILENT // No UI should be shown. |
53 }; | 53 }; |
54 | 54 |
55 enum Failure { | 55 enum Failure { |
56 WINDOW_CLOSED, // Window closed by user. | 56 WINDOW_CLOSED, // Window closed by user. |
57 INTERACTION_REQUIRED, // Non-redirect page load in silent mode. | 57 INTERACTION_REQUIRED, // Non-redirect page load in silent mode. |
58 LOAD_FAILED | 58 LOAD_FAILED |
(...skipping 26 matching lines...) Expand all Loading... |
85 // Starts the flow. | 85 // Starts the flow. |
86 virtual void Start(); | 86 virtual void Start(); |
87 | 87 |
88 // Prevents further calls to the delegate and deletes the flow. | 88 // Prevents further calls to the delegate and deletes the flow. |
89 void DetachDelegateAndDelete(); | 89 void DetachDelegateAndDelete(); |
90 | 90 |
91 private: | 91 private: |
92 friend class ::WebAuthFlowTest; | 92 friend class ::WebAuthFlowTest; |
93 | 93 |
94 // ::AppWindowRegistry::Observer implementation. | 94 // ::AppWindowRegistry::Observer implementation. |
95 virtual void OnAppWindowAdded(apps::AppWindow* app_window) OVERRIDE; | 95 virtual void OnAppWindowAdded(AppWindow* app_window) OVERRIDE; |
96 virtual void OnAppWindowRemoved(apps::AppWindow* app_window) OVERRIDE; | 96 virtual void OnAppWindowRemoved(AppWindow* app_window) OVERRIDE; |
97 | 97 |
98 // NotificationObserver implementation. | 98 // NotificationObserver implementation. |
99 virtual void Observe(int type, | 99 virtual void Observe(int type, |
100 const content::NotificationSource& source, | 100 const content::NotificationSource& source, |
101 const content::NotificationDetails& details) OVERRIDE; | 101 const content::NotificationDetails& details) OVERRIDE; |
102 | 102 |
103 // WebContentsObserver implementation. | 103 // WebContentsObserver implementation. |
104 virtual void DidStopLoading(content::RenderViewHost* render_view_host) | 104 virtual void DidStopLoading(content::RenderViewHost* render_view_host) |
105 OVERRIDE; | 105 OVERRIDE; |
106 virtual void DidNavigateMainFrame( | 106 virtual void DidNavigateMainFrame( |
(...skipping 12 matching lines...) Expand all Loading... |
119 const base::string16& error_description) OVERRIDE; | 119 const base::string16& error_description) OVERRIDE; |
120 | 120 |
121 void BeforeUrlLoaded(const GURL& url); | 121 void BeforeUrlLoaded(const GURL& url); |
122 void AfterUrlLoaded(); | 122 void AfterUrlLoaded(); |
123 | 123 |
124 Delegate* delegate_; | 124 Delegate* delegate_; |
125 Profile* profile_; | 125 Profile* profile_; |
126 GURL provider_url_; | 126 GURL provider_url_; |
127 Mode mode_; | 127 Mode mode_; |
128 | 128 |
129 apps::AppWindow* app_window_; | 129 AppWindow* app_window_; |
130 std::string app_window_key_; | 130 std::string app_window_key_; |
131 bool embedded_window_created_; | 131 bool embedded_window_created_; |
132 | 132 |
133 content::NotificationRegistrar registrar_; | 133 content::NotificationRegistrar registrar_; |
134 | 134 |
135 DISALLOW_COPY_AND_ASSIGN(WebAuthFlow); | 135 DISALLOW_COPY_AND_ASSIGN(WebAuthFlow); |
136 }; | 136 }; |
137 | 137 |
138 } // namespace extensions | 138 } // namespace extensions |
139 | 139 |
140 #endif // CHROME_BROWSER_EXTENSIONS_API_IDENTITY_WEB_AUTH_FLOW_H_ | 140 #endif // CHROME_BROWSER_EXTENSIONS_API_IDENTITY_WEB_AUTH_FLOW_H_ |
OLD | NEW |