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