// Copyright (c) 2009 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_PAGE_INFO_MODEL_H_ #define CHROME_BROWSER_PAGE_INFO_MODEL_H_ #include #include "base/string16.h" #include "chrome/browser/cancelable_request.h" #include "chrome/browser/history/history.h" #include "chrome/browser/tab_contents/navigation_entry.h" #include "googleurl/src/gurl.h" class PrefService; class Profile; // The model that provides the information that should be displayed in the page // info dialog. class PageInfoModel { public: class PageInfoModelObserver { public: virtual void ModelChanged() = 0; }; // Because the UI on the Mac is statically laid-out, this enum provides the // section type for the associated index. It is only used on Mac. // Ideally the view wouldn't have to know anything regarding the semantics of // the model and would only use GetSectionCount()/GetSectionInfo(). enum SectionType { IDENTITY = 0, CONNECTION, HISTORY }; struct SectionInfo { SectionInfo(bool state, const string16& title, const string16& head_line, const string16& description) : state(state), title(title), head_line(head_line), description(description) { } bool state; // True if state is OK, false otherwise (ex of bad states: // unverified identity over HTTPS). // The title of the section. string16 title; // A single line describing the section, optional. string16 head_line; // The full description of what this section is. string16 description; }; PageInfoModel(Profile* profile, const GURL& url, const NavigationEntry::SSLStatus& ssl, bool show_history, PageInfoModelObserver* observer); int GetSectionCount(); SectionInfo GetSectionInfo(int index); // Callback from history service with number of visits to url. void OnGotVisitCountToHost(HistoryService::Handle handle, bool found_visits, int count, base::Time first_visit); static void RegisterPrefs(PrefService* prefs); private: PageInfoModelObserver* observer_; std::vector sections_; // Used to request number of visits. CancelableRequestConsumer request_consumer_; DISALLOW_COPY_AND_ASSIGN(PageInfoModel); }; #endif // CHROME_BROWSER_PAGE_INFO_MODEL_H_