10529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
20529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Use of this source code is governed by a BSD-style license that can be
30529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// found in the LICENSE file.
40529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
50529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#ifndef CHROME_BROWSER_UI_PASSWORDS_MANAGE_PASSWORDS_BUBBLE_H_
60529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#define CHROME_BROWSER_UI_PASSWORDS_MANAGE_PASSWORDS_BUBBLE_H_
70529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
80529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "base/basictypes.h"
90529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "base/memory/scoped_ptr.h"
100529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "components/password_manager/core/browser/password_manager_metrics_util.h"
110529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
120529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass ManagePasswordsBubbleModel;
130529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
140529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochnamespace content {
150529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass WebContents;
160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}  // namespace content
170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
180529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Base class for platform-specific password management bubble views. This class
190529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// is responsible for creating and destroying the model associated with the view
200529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// and providing a platform-agnostic interface to the bubble.
210529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass ManagePasswordsBubble {
220529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch public:
230529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  enum DisplayReason { AUTOMATIC, USER_ACTION };
240529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch protected:
260529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  // Creates a ManagePasswordsBubble. |contents| is used only to create a
270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  // ManagePasswordsBubbleModel; this class neither takes ownership of the
280529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  // object nor stores the pointer.
290529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  ManagePasswordsBubble(content::WebContents* contents, DisplayReason reason);
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual ~ManagePasswordsBubble();
310529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
320529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  ManagePasswordsBubbleModel* model() { return model_.get(); }
33010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  const ManagePasswordsBubbleModel* model() const { return model_.get(); }
340529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
350529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch private:
360529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  scoped_ptr<ManagePasswordsBubbleModel> model_;
370529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
380529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  DISALLOW_COPY_AND_ASSIGN(ManagePasswordsBubble);
390529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch};
400529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
410529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#endif  // CHROME_BROWSER_UI_PASSWORDS_MANAGE_PASSWORDS_BUBBLE_H_
42