点击这里给我发消息 点击这里给我发消息

谷歌浏览器的源码分析(4)

添加时间:2013-12-7
    相关阅读: 网页 软件 程序 google 谷歌
  关于对话框,主要实现了让用户查看当前软件的版本、软件信息和检查升级的功能。因此这个类主要继续ChromeViews::View类、ChromeViews::DialogDelegate和GoogleUpdateStatusListener.其中ChromeViews::View实现窗口的布局和显示问题,ChromeViews::DialogDelegate实现了事件响应,或者窗口某时是否可以显示按钮的问题,GoogleUpdateStatusListener是用来实现接收更新程序状态信息。
 
  这个类的声明如下:
 
 class AboutChromeView : public ChromeViews::View,
            public ChromeViews::DialogDelegate,
            public GoogleUpdateStatusListener {
public:
 explicit AboutChromeView(Profile* profile);
 virtual ~AboutChromeView();
 // Initialize the controls on the dialog.
 void Init();
 // Overridden from ChromeViews::View:
 virtual void GetPreferredSize(CSize *out);
 virtual void Layout();
 virtual void ViewHierarchyChanged(bool is_add,
                  ChromeViews::View* parent,
                  ChromeViews::View* child);
 // Overridden from ChromeViews::DialogDelegate:
 virtual int GetDialogButtons() const;
 virtual std::wstring GetDialogButtonLabel(DialogButton button) const;
 virtual bool IsDialogButtonEnabled(DialogButton button) const;
 virtual bool IsDialogButtonVisible(DialogButton button) const;
 virtual bool CanResize() const;
 virtual bool CanMaximize() const;
 virtual bool IsAlwaysOnTop() const;
 virtual bool HasAlwaysOnTopMenu() const;
 virtual bool IsModal() const;
 virtual std::wstring GetWindowTitle() const;
 virtual bool Accept();
 virtual ChromeViews::View* GetContentsView();
 // Overridden from GoogleUpdateStatusListener:
 virtual void OnReportResults(GoogleUpdateUpgradeResult result,
                GoogleUpdateErrorCode error_code,
                const std::wstring& version);
private:
 // The visible state of the Check For Updates button.
 enum CheckButtonStatus {
  CHECKBUTTON_HIDDEN = 0,
  CHECKBUTTON_DISABLED,
  CHECKBUTTON_ENABLED,
 };
 // Update the UI to show the status of the upgrade.
 void UpdateStatus(GoogleUpdateUpgradeResult result,
          GoogleUpdateErrorCode error_code);
 Profile* profile_;
 // UI elements on the dialog.
 ChromeViews::ImageView* about_dlg_background_;
 ChromeViews::Label* about_title_label_;
 ChromeViews::TextField* version_label_;
 ChromeViews::TextField* main_text_label_;
 // UI elements we add to the parent view.
 scoped_ptr<ChromeViews::Throbber> throbber_;
 ChromeViews::ImageView success_indicator_;
 ChromeViews::ImageView update_available_indicator_;
 ChromeViews::ImageView timeout_indicator_;
 ChromeViews::Label update_label_;
 // Keeps track of the visible state of the Check For Updates button.
 CheckButtonStatus check_button_status_;
 // The class that communicates with Google Update to find out if an update is
 // available and asks it to start an upgrade.
 GoogleUpdate* google_updater_;
 // Our current version.
 std::wstring current_version_;
 // The version Google Update reports is available to us.
 std::wstring new_version_available_;
 DISALLOW_EVIL_CONSTRUCTORS(AboutChromeView);
};

  通过关于对话框的分析,可以理解到chrome浏览器窗口基本组成,以及窗口继承关系,还有事件的响应方式。前面三次分析,主要是入门的分析,也是了解这么一个大工程的一种手段。比如测试整个工程是否可以编译,是否可以修改代码等等。后面的分析会以浏览器输入HTTP连接开始,直到打开网页显示为一个主线,做一个基本的分析。
相关谷歌浏览器的源码分析(4)

咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册