Home | History | Annotate | Download | only in signin
      1 // Copyright 2013 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_UI_WEBUI_SIGNIN_INLINE_LOGIN_HANDLER_IMPL_H_
      6 #define CHROME_BROWSER_UI_WEBUI_SIGNIN_INLINE_LOGIN_HANDLER_IMPL_H_
      7 
      8 #include <string>
      9 
     10 #include "base/memory/scoped_ptr.h"
     11 #include "base/memory/weak_ptr.h"
     12 #include "chrome/browser/ui/sync/one_click_signin_sync_starter.h"
     13 #include "chrome/browser/ui/webui/signin/inline_login_handler.h"
     14 #include "content/public/browser/web_contents_delegate.h"
     15 
     16 class GaiaAuthFetcher;
     17 
     18 // Implementation for the inline login WebUI handler on desktop Chrome. Once
     19 // CrOS migrates to the same webview approach as desktop Chrome, much of the
     20 // code in this class should move to its base class |InlineLoginHandler|.
     21 class InlineLoginHandlerImpl : public InlineLoginHandler,
     22                                public content::WebContentsDelegate,
     23                                public content::WebContentsObserver {
     24  public:
     25   InlineLoginHandlerImpl();
     26   virtual ~InlineLoginHandlerImpl();
     27 
     28   using InlineLoginHandler::web_ui;
     29 
     30   base::WeakPtr<InlineLoginHandlerImpl> GetWeakPtr() {
     31     return weak_factory_.GetWeakPtr();
     32   }
     33 
     34   Browser* GetDesktopBrowser();
     35   void SyncStarterCallback(OneClickSigninSyncStarter::SyncSetupResult result);
     36   // Closes the current tab and shows the account management view of the avatar
     37   // bubble if |show_account_management| is true.
     38   void CloseTab(bool show_account_management);
     39   void HandleLoginError(const std::string& error_msg);
     40 
     41  private:
     42   // InlineLoginHandler overrides:
     43   virtual void SetExtraInitParams(base::DictionaryValue& params) OVERRIDE;
     44   virtual void CompleteLogin(const base::ListValue* args) OVERRIDE;
     45 
     46   // Overridden from content::WebContentsDelegate.
     47   virtual bool HandleContextMenu(
     48       const content::ContextMenuParams& params) OVERRIDE;
     49 
     50   // Overridden from content::WebContentsObserver overrides.
     51   virtual void DidCommitProvisionalLoadForFrame(
     52       content::RenderFrameHost* render_frame_host,
     53       const GURL& url,
     54       ui::PageTransition transition_type) OVERRIDE;
     55 
     56   // True if the user has navigated to untrusted domains during the signin
     57   // process.
     58   bool confirm_untrusted_signin_;
     59 
     60   base::WeakPtrFactory<InlineLoginHandlerImpl> weak_factory_;
     61 
     62   DISALLOW_COPY_AND_ASSIGN(InlineLoginHandlerImpl);
     63 };
     64 
     65 #endif  // CHROME_BROWSER_UI_WEBUI_SIGNIN_INLINE_LOGIN_HANDLER_IMPL_H_
     66