| 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 |