123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 50529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#ifndef CHROME_BROWSER_UI_ANDROID_INFOBARS_AUTO_LOGIN_PROMPTER_H_ 60529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#define CHROME_BROWSER_UI_ANDROID_INFOBARS_AUTO_LOGIN_PROMPTER_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h" 11effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "chrome/browser/ui/auto_login_infobar_delegate.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/web_contents_observer.h" 137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "url/gurl.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class RenderViewHost; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebContents; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace net { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class URLRequest; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This class displays an infobar that allows the user to automatically login to 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the currently loaded page with one click. This is used when the browser 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// detects that the user has navigated to a login page and that there are stored 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// tokens that would allow a one-click login. 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class AutoLoginPrompter : public content::WebContentsObserver { 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef AutoLoginInfoBarDelegate::Params Params; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Looks for the X-Auto-Login response header in the request, and if found, 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // tries to display an infobar in the tab contents identified by the 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // child/route id. 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void ShowInfoBarIfPossible(net::URLRequest* request, 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int child_id, 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int route_id); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class AutoLoginPrompterTest; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AutoLoginPrompter(content::WebContents* web_contents, 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const Params& params, 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL& url); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~AutoLoginPrompter(); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void ShowInfoBarUIThread(Params params, 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& url, 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int child_id, 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int route_id); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void DidStopLoading( 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::RenderViewHost* render_view_host) OVERRIDE; 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 56010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void WebContentsDestroyed() OVERRIDE; 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Add the infobar to the WebContents, if it's still needed. 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AddInfoBarToWebContents(); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const Params params_; 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL url_; 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool infobar_shown_; 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(AutoLoginPrompter); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 680529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#endif // CHROME_BROWSER_UI_ANDROID_INFOBARS_AUTO_LOGIN_PROMPTER_H_ 69