Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / toolbar / origin_chip_info.h
1 // Copyright 2014 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_TOOLBAR_ORIGIN_CHIP_INFO_H_
6 #define CHROME_BROWSER_UI_TOOLBAR_ORIGIN_CHIP_INFO_H_
7
8 #include "base/strings/string16.h"
9 #include "chrome/browser/extensions/extension_icon_image.h"
10 #include "chrome/browser/ui/toolbar/toolbar_model.h"
11
12 class GURL;
13 class Profile;
14
15 namespace content {
16 class WebContents;
17 }
18
19 // This class manages the information to be displayed by the origin chip.
20 class OriginChipInfo {
21  public:
22   // The |owner| owns this OriginChipInfo and must outlive it. If the current
23   // origin is an extension, the |owner|'s OnExtensionIconImageChanged()
24   // method will be called whenever the icon changes.
25   OriginChipInfo(extensions::IconImage::Observer* owner, Profile* profile);
26   ~OriginChipInfo();
27
28   // Updates the current state. Returns whether the displayable information has
29   // changed.
30   bool Update(const content::WebContents* web_contents,
31               const ToolbarModel* toolbar_model);
32
33   // Returns the label to be displayed by the origin chip.
34   const base::string16& label() const { return label_; }
35
36   // Returns the tooltip to be used for the origin chip.
37   base::string16 Tooltip() const;
38
39   // Returns the ID of the icon to be displayed by the origin chip. Note that
40   // if |owner_|'s OnExtensionIconImageChanged() method was called with
41   // anything else than NULL, that icon has precedence over whatever this method
42   // returns.
43   int icon() const { return icon_; }
44
45   // Returns the full URL.
46   const GURL& displayed_url() const { return displayed_url_; }
47
48   // Returns the security level of the current URL.
49   ToolbarModel::SecurityLevel security_level() const { return security_level_; }
50
51   // Returns whether the current URL is known to be malware or not.
52   bool is_url_malware() const { return is_url_malware_; }
53
54  private:
55   // The observer which will receive OnExtensionIconImageChanged() calls.
56   extensions::IconImage::Observer* owner_;
57
58   Profile* profile_;
59
60   // State used to determine whether the |label_| and |icon_| need to be
61   // recomputed.
62   GURL displayed_url_;
63   ToolbarModel::SecurityLevel security_level_;
64   bool is_url_malware_;
65
66   // The label and icon to be displayed by the origin chip.
67   base::string16 label_;
68   int icon_;
69
70   // extensions::IconImage instance, used for observing changes in an
71   // extension's icon, when the current page belongs to an extension.
72   scoped_ptr<extensions::IconImage> extension_icon_image_;
73
74   DISALLOW_COPY_AND_ASSIGN(OriginChipInfo);
75 };
76
77 // This class is left here to prevent breaking the views code. It will be
78 // removed soon, and the functions will become local to origin_chip.cc.
79 class OriginChip {
80  public:
81   // Detects client-side or SB malware/phishing hits. Used to decide whether the
82   // origin chip should indicate that the current page has malware or is a known
83   // phishing page.
84   static bool IsMalware(const GURL& url, const content::WebContents* tab);
85
86   // Gets the label to display on the Origin Chip for the specified URL. The
87   // |profile| is needed in case the URL is from an extension.
88   static base::string16 LabelFromURLForProfile(const GURL& provided_url,
89                                                Profile* profile);
90 };
91
92 #endif  // CHROME_BROWSER_UI_TOOLBAR_ORIGIN_CHIP_INFO_H_