simple_web_view_dialog.cc revision 6e8cce623b6e4fe0c9e4af605d675dd9d0338c38
1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (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)
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/chromeos/login/ui/simple_web_view_dialog.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/shell.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/shell_window_ids.h"
99ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/message_loop/message_loop.h"
10868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/app/chrome_command_ids.h"
124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "chrome/browser/chromeos/login/helper.h"
13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/chromeos/login/ui/captive_portal_window_proxy.h"
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/command_updater.h"
155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/password_manager/chrome_password_manager_client.h"
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/profiles/profile.h"
17f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "chrome/browser/ui/autofill/chrome_autofill_client.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h"
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/content_settings/content_setting_bubble_model_delegate.h"
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/toolbar/toolbar_model_impl.h"
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/view_ids.h"
22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/ui/views/toolbar/reload_button.h"
236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/grit/generated_resources.h"
246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/grit/theme_resources.h"
25a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/password_manager/core/browser/password_manager.h"
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/navigation_controller.h"
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/navigation_entry.h"
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_contents.h"
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ipc/ipc_message.h"
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/l10n/l10n_util.h"
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/theme_provider.h"
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/background.h"
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/webview/webview.h"
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/layout/grid_layout.h"
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/layout/layout_constants.h"
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/view.h"
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/widget/widget.h"
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::WebContents;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using views::GridLayout;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const int kLocationBarHeight = 35;
454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Margin between screen edge and SimpleWebViewDialog border.
474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)const int kExternalMargin = 60;
484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Margin between WebView and SimpleWebViewDialog border.
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const int kInnerMargin = 2;
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)const SkColor kDialogColor = SK_ColorWHITE;
535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ToolbarRowView : public views::View {
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ToolbarRowView() {
575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    set_background(views::Background::CreateSolidBackground(kDialogColor));
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~ToolbarRowView() {}
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void Init(views::View* back,
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            views::View* forward,
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            views::View* reload,
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            views::View* location_bar) {
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GridLayout* layout = new GridLayout(this);
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    SetLayoutManager(layout);
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Back button.
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    views::ColumnSet* column_set = layout->AddColumnSet(0);
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    column_set->AddColumn(GridLayout::CENTER, GridLayout::CENTER, 0,
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          GridLayout::USE_PREF, 0, 0);
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    column_set->AddPaddingColumn(0, views::kRelatedControlHorizontalSpacing);
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Forward button.
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    column_set->AddColumn(GridLayout::CENTER, GridLayout::CENTER, 0,
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          GridLayout::USE_PREF, 0, 0);
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    column_set->AddPaddingColumn(0, views::kRelatedControlHorizontalSpacing);
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Reload button.
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    column_set->AddColumn(GridLayout::CENTER, GridLayout::CENTER, 0,
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          GridLayout::USE_PREF, 0, 0);
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    column_set->AddPaddingColumn(0, views::kRelatedControlHorizontalSpacing);
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Location bar.
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    column_set->AddColumn(GridLayout::FILL, GridLayout::CENTER, 1,
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          GridLayout::FIXED, kLocationBarHeight, 0);
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    column_set->AddPaddingColumn(0, views::kRelatedControlHorizontalSpacing);
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    layout->StartRow(0, 0);
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    layout->AddView(back);
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    layout->AddView(forward);
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    layout->AddView(reload);
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    layout->AddView(location_bar);
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ToolbarRowView);
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos {
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Stub implementation of ContentSettingBubbleModelDelegate.
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class StubBubbleModelDelegate : public ContentSettingBubbleModelDelegate {
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  StubBubbleModelDelegate() {}
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~StubBubbleModelDelegate() {}
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ContentSettingBubbleModelDelegate implementation:
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowCollectedCookiesDialog(
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content::WebContents* web_contents) OVERRIDE {
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowContentSettingsPage(ContentSettingsType type) OVERRIDE {
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1166d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)  virtual void ShowLearnMorePage(ContentSettingsType type) OVERRIDE {
1176d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)  }
1186d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(StubBubbleModelDelegate);
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// SimpleWebViewDialog class ---------------------------------------------------
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SimpleWebViewDialog::SimpleWebViewDialog(Profile* profile)
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : profile_(profile),
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      back_(NULL),
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      forward_(NULL),
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      reload_(NULL),
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      location_bar_(NULL),
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      web_view_(NULL),
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      bubble_model_delegate_(new StubBubbleModelDelegate) {
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  command_updater_.reset(new CommandUpdater(this));
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  command_updater_->UpdateCommandEnabled(IDC_BACK, true);
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  command_updater_->UpdateCommandEnabled(IDC_FORWARD, true);
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  command_updater_->UpdateCommandEnabled(IDC_STOP, true);
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  command_updater_->UpdateCommandEnabled(IDC_RELOAD, true);
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  command_updater_->UpdateCommandEnabled(IDC_RELOAD_IGNORING_CACHE, true);
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  command_updater_->UpdateCommandEnabled(IDC_RELOAD_CLEARING_CACHE, true);
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SimpleWebViewDialog::~SimpleWebViewDialog() {
143a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  if (web_view_ && web_view_->web_contents())
144a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    web_view_->web_contents()->SetDelegate(NULL);
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SimpleWebViewDialog::StartLoad(const GURL& url) {
1484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  if (!web_view_container_.get())
1494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    web_view_container_.reset(new views::WebView(profile_));
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  web_view_ = web_view_container_.get();
1515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  web_view_->set_owned_by_client();
1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  web_view_->GetWebContents()->SetDelegate(this);
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  web_view_->LoadInitialURL(url);
1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  WebContents* web_contents = web_view_->GetWebContents();
1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  DCHECK(web_contents);
1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Create the password manager that is needed for the proxy.
159f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  ChromePasswordManagerClient::CreateForWebContentsWithAutofillClient(
1605c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      web_contents,
161f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      autofill::ChromeAutofillClient::FromWebContents(web_contents));
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SimpleWebViewDialog::Init() {
1653551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  toolbar_model_.reset(new ToolbarModelImpl(this));
1663551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
1675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  set_background(views::Background::CreateSolidBackground(kDialogColor));
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Back/Forward buttons.
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  back_ = new views::ImageButton(this);
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  back_->set_triggerable_event_flags(ui::EF_LEFT_MOUSE_BUTTON |
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     ui::EF_MIDDLE_MOUSE_BUTTON);
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  back_->set_tag(IDC_BACK);
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  back_->SetImageAlignment(views::ImageButton::ALIGN_RIGHT,
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           views::ImageButton::ALIGN_TOP);
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  back_->SetTooltipText(l10n_util::GetStringUTF16(IDS_TOOLTIP_BACK));
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  back_->SetAccessibleName(l10n_util::GetStringUTF16(IDS_ACCNAME_BACK));
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  back_->set_id(VIEW_ID_BACK_BUTTON);
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  forward_ = new views::ImageButton(this);
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  forward_->set_triggerable_event_flags(ui::EF_LEFT_MOUSE_BUTTON |
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                        ui::EF_MIDDLE_MOUSE_BUTTON);
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  forward_->set_tag(IDC_FORWARD);
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  forward_->SetTooltipText(l10n_util::GetStringUTF16(IDS_TOOLTIP_FORWARD));
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  forward_->SetAccessibleName(l10n_util::GetStringUTF16(IDS_ACCNAME_FORWARD));
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  forward_->set_id(VIEW_ID_FORWARD_BUTTON);
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Location bar.
18990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  location_bar_ = new LocationBarView(NULL, profile_, command_updater_.get(),
1903551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                                      this, true);
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Reload button.
1930529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  reload_ = new ReloadButton(command_updater_.get());
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  reload_->set_triggerable_event_flags(ui::EF_LEFT_MOUSE_BUTTON |
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       ui::EF_MIDDLE_MOUSE_BUTTON);
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  reload_->set_tag(IDC_RELOAD);
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  reload_->SetTooltipText(l10n_util::GetStringUTF16(IDS_TOOLTIP_RELOAD));
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  reload_->SetAccessibleName(l10n_util::GetStringUTF16(IDS_ACCNAME_RELOAD));
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  reload_->set_id(VIEW_ID_RELOAD_BUTTON);
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Use separate view to setup custom background.
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ToolbarRowView* toolbar_row = new ToolbarRowView;
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  toolbar_row->Init(back_, forward_, reload_, location_bar_);
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Layout.
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GridLayout* layout = new GridLayout(this);
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetLayoutManager(layout);
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  views::ColumnSet* column_set = layout->AddColumnSet(0);
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 1,
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        GridLayout::FIXED, 0, 0);
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  column_set = layout->AddColumnSet(1);
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  column_set->AddPaddingColumn(0, kInnerMargin);
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 1,
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        GridLayout::FIXED, 0, 0);
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  column_set->AddPaddingColumn(0, kInnerMargin);
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Setup layout rows.
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  layout->StartRow(0, 0);
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  layout->AddView(toolbar_row);
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  layout->AddPaddingRow(0, kInnerMargin);
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  layout->StartRow(1, 1);
2265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  layout->AddView(web_view_container_.get());
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  layout->AddPaddingRow(0, kInnerMargin);
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
229f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  LoadImages();
230f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  location_bar_->Init();
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UpdateReload(web_view_->web_contents()->IsLoading(), true);
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  gfx::Rect bounds(CalculateScreenBounds(gfx::Size()));
2354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  bounds.Inset(kExternalMargin, kExternalMargin);
2364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  layout->set_minimum_size(bounds.size());
2374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Layout();
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
241868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)void SimpleWebViewDialog::Layout() {
242868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  views::WidgetDelegateView::Layout();
243868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
244868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)views::View* SimpleWebViewDialog::GetContentsView() {
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return this;
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)views::View* SimpleWebViewDialog::GetInitiallyFocusedView() {
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return web_view_;
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SimpleWebViewDialog::ButtonPressed(views::Button* sender,
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                        const ui::Event& event) {
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  command_updater_->ExecuteCommand(sender->tag());
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
258a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)content::WebContents* SimpleWebViewDialog::OpenURL(
259a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    const content::OpenURLParams& params) {
260a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // As there are no Browsers right now, this could not actually ever work.
261a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  NOTIMPLEMENTED();
262a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  return NULL;
263a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
264a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SimpleWebViewDialog::NavigationStateChanged(
2666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    const WebContents* source, content::InvalidateTypes changed_flags) {
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (location_bar_) {
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    location_bar_->Update(NULL);
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    UpdateButtons();
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
273effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid SimpleWebViewDialog::LoadingStateChanged(WebContents* source,
274effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    bool to_different_document) {
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool is_loading = source->IsLoading();
276effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  UpdateReload(is_loading && to_different_document, false);
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  command_updater_->UpdateCommandEnabled(IDC_STOP, is_loading);
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2803551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)WebContents* SimpleWebViewDialog::GetWebContents() {
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return NULL;
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2843551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)ToolbarModel* SimpleWebViewDialog::GetToolbarModel() {
2853551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  return toolbar_model_.get();
2863551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)}
2873551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
2883551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)const ToolbarModel* SimpleWebViewDialog::GetToolbarModel() const {
2893551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  return toolbar_model_.get();
2903551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)}
2913551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)InstantController* SimpleWebViewDialog::GetInstant() {
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return NULL;
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)views::Widget* SimpleWebViewDialog::CreateViewsBubble(
2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    views::BubbleDelegateView* bubble_delegate) {
2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return views::BubbleDelegateView::CreateBubble(bubble_delegate);
2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ContentSettingBubbleModelDelegate*
3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SimpleWebViewDialog::GetContentSettingBubbleModelDelegate() {
3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return bubble_model_delegate_.get();
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SimpleWebViewDialog::ShowWebsiteSettings(
3072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    content::WebContents* web_contents,
3082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const GURL& url,
3097dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    const content::SSLStatus& ssl) {
3102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  NOTIMPLEMENTED();
3112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // TODO (ygorshenin@,markusheintz@): implement this
3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PageActionImageView* SimpleWebViewDialog::CreatePageActionImageView(
3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    LocationBarView* owner,
3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ExtensionAction* action) {
31790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Notreached because SimpleWebViewDialog uses a popup-mode LocationBarView,
31890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // and it doesn't create PageActionImageViews.
3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NOTREACHED();
3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return NULL;
3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)content::WebContents* SimpleWebViewDialog::GetActiveWebContents() const {
3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return web_view_->web_contents();
3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool SimpleWebViewDialog::InTabbedBrowser() const {
3285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  return false;
3295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
3305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SimpleWebViewDialog::ExecuteCommandWithDisposition(
3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int id,
3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    WindowOpenDisposition) {
3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WebContents* web_contents = web_view_->web_contents();
3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  switch (id) {
3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case IDC_BACK:
3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (web_contents->GetController().CanGoBack()) {
3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        location_bar_->Revert();
3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        web_contents->GetController().GoBack();
3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case IDC_FORWARD:
3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (web_contents->GetController().CanGoForward()) {
3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        location_bar_->Revert();
3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        web_contents->GetController().GoForward();
3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case IDC_STOP:
3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      web_contents->Stop();
3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case IDC_RELOAD:
3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      // Always reload ignoring cache.
3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case IDC_RELOAD_IGNORING_CACHE:
3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case IDC_RELOAD_CLEARING_CACHE:
35523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      location_bar_->Revert();
3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      web_contents->GetController().ReloadIgnoringCache(true);
3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    default:
3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      NOTREACHED();
3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SimpleWebViewDialog::LoadImages() {
3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ui::ThemeProvider* tp = GetThemeProvider();
3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  back_->SetImage(views::CustomButton::STATE_NORMAL,
3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                  tp->GetImageSkiaNamed(IDR_BACK));
3682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  back_->SetImage(views::CustomButton::STATE_HOVERED,
3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                  tp->GetImageSkiaNamed(IDR_BACK_H));
3702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  back_->SetImage(views::CustomButton::STATE_PRESSED,
3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                  tp->GetImageSkiaNamed(IDR_BACK_P));
3722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  back_->SetImage(views::CustomButton::STATE_DISABLED,
3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                  tp->GetImageSkiaNamed(IDR_BACK_D));
3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  forward_->SetImage(views::CustomButton::STATE_NORMAL,
3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     tp->GetImageSkiaNamed(IDR_FORWARD));
3772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  forward_->SetImage(views::CustomButton::STATE_HOVERED,
3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     tp->GetImageSkiaNamed(IDR_FORWARD_H));
3792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  forward_->SetImage(views::CustomButton::STATE_PRESSED,
3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     tp->GetImageSkiaNamed(IDR_FORWARD_P));
3812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  forward_->SetImage(views::CustomButton::STATE_DISABLED,
3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     tp->GetImageSkiaNamed(IDR_FORWARD_D));
3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
384f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  reload_->LoadImages();
3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SimpleWebViewDialog::UpdateButtons() {
3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const content::NavigationController& navigation_controller =
3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      web_view_->web_contents()->GetController();
3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  back_->SetEnabled(navigation_controller.CanGoBack());
3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  forward_->SetEnabled(navigation_controller.CanGoForward());
3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SimpleWebViewDialog::UpdateReload(bool is_loading, bool force) {
3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (reload_) {
3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    reload_->ChangeMode(
3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        is_loading ? ReloadButton::MODE_STOP : ReloadButton::MODE_RELOAD,
3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        force);
3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace chromeos
403