15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 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) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/toolbar/wrench_menu_model.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/app/chrome_command_ids.h" 8a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#include "chrome/browser/prefs/browser_prefs.h" 97dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chrome/browser/signin/profile_oauth2_token_service_factory.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/global_error/global_error.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/global_error/global_error_service.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/global_error/global_error_service_factory.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/tabs/tab_strip_model.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/browser_with_test_window_test.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/menu_model_test.h" 17a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#include "chrome/test/base/testing_browser_process.h" 18a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#include "chrome/test/base/testing_io_thread_state.h" 19a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#include "chrome/test/base/testing_pref_service_syncable.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/testing_profile.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "grit/generated_resources.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Error class has a menu item. 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MenuError : public GlobalError { 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit MenuError(int command_id) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : command_id_(command_id), 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) execute_count_(0) { 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int execute_count() { return execute_count_; } 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool HasMenuItem() OVERRIDE { return true; } 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int MenuItemCommandID() OVERRIDE { return command_id_; } 38a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual base::string16 MenuItemLabel() OVERRIDE { return base::string16(); } 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ExecuteMenuItem(Browser* browser) OVERRIDE { execute_count_++; } 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool HasBubbleView() OVERRIDE { return false; } 420f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) virtual bool HasShownBubbleView() OVERRIDE { return false; } 430f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) virtual void ShowBubbleView(Browser* browser) OVERRIDE { ADD_FAILURE(); } 440f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) virtual GlobalErrorBubbleViewBase* GetBubbleView() OVERRIDE { return NULL; } 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int command_id_; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int execute_count_; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(MenuError); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WrenchMenuModelTest : public BrowserWithTestWindowTest, 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public ui::AcceleratorProvider { 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Don't handle accelerators. 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool GetAcceleratorForCommandId( 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int command_id, 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ui::Accelerator* accelerator) OVERRIDE { return false; } 62a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 63a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch protected: 64a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch virtual void SetUp() OVERRIDE { 65a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch prefs_.reset(new TestingPrefServiceSimple()); 66a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch chrome::RegisterLocalState(prefs_->registry()); 67a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 68a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch TestingBrowserProcess::GetGlobal()->SetLocalState(prefs_.get()); 69a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch testing_io_thread_state_.reset(new chrome::TestingIOThreadState()); 70a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch BrowserWithTestWindowTest::SetUp(); 71a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch } 72a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 73a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch virtual void TearDown() OVERRIDE { 74a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch BrowserWithTestWindowTest::TearDown(); 75a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch testing_io_thread_state_.reset(); 76a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch TestingBrowserProcess::GetGlobal()->SetLocalState(NULL); 77a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch DestroyBrowserAndProfile(); 78a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch } 79a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 80a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch private: 81a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch scoped_ptr<TestingPrefServiceSimple> prefs_; 82a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch scoped_ptr<chrome::TestingIOThreadState> testing_io_thread_state_; 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copies parts of MenuModelTest::Delegate and combines them with the 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// WrenchMenuModel since WrenchMenuModel is now a SimpleMenuModel::Delegate and 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// not derived from SimpleMenuModel. 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TestWrenchMenuModel : public WrenchMenuModel { 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestWrenchMenuModel(ui::AcceleratorProvider* provider, 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Browser* browser) 92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : WrenchMenuModel(provider, browser, false), 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) execute_count_(0), 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) checked_count_(0), 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enable_count_(0) { 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Testing overrides to ui::SimpleMenuModel::Delegate: 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool IsCommandIdChecked(int command_id) const OVERRIDE { 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool val = WrenchMenuModel::IsCommandIdChecked(command_id); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (val) 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) checked_count_++; 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return val; 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool IsCommandIdEnabled(int command_id) const OVERRIDE { 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ++enable_count_; 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void ExecuteCommand(int command_id, int event_flags) OVERRIDE { 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ++execute_count_; 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int execute_count_; 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable int checked_count_; 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mutable int enable_count_; 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(WrenchMenuModelTest, Basics) { 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestWrenchMenuModel model(this, browser()); 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int itemCount = model.GetItemCount(); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Verify it has items. The number varies by platform, so we don't check 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the exact number. 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_GT(itemCount, 10); 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Execute a couple of the items and make sure it gets back to our delegate. 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We can't use CountEnabledExecutable() here because the encoding menu's 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // delegate is internal, it doesn't use the one we pass in. 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Note: The new menu has a spacing separator at the first slot. 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) model.ActivatedAt(1); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(model.IsEnabledAt(1)); 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Make sure to use the index that is not separator in all configurations. 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) model.ActivatedAt(2); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(model.IsEnabledAt(2)); 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(model.execute_count_, 2); 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(model.enable_count_, 2); 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) model.execute_count_ = 0; 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) model.enable_count_ = 0; 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Choose something from the bookmark submenu and make sure it makes it back 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // to the delegate as well. 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int bookmarksModelIndex = -1; 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < itemCount; ++i) { 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (model.GetTypeAt(i) == ui::MenuModel::TYPE_SUBMENU) { 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bookmarksModelIndex = i; 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_GT(bookmarksModelIndex, -1); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::MenuModel* bookmarksModel = model.GetSubmenuModelAt(bookmarksModelIndex); 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(bookmarksModel); 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The bookmarks model may be empty until we tell it we're going to show it. 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bookmarksModel->MenuWillShow(); 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_GT(bookmarksModel->GetItemCount(), 1); 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bookmarksModel->ActivatedAt(1); 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(bookmarksModel->IsEnabledAt(1)); 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(model.execute_count_, 1); 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(model.enable_count_, 1); 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Tests global error menu items in the wrench menu. 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(WrenchMenuModelTest, GlobalError) { 1667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Make sure services required for tests are initialized. 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GlobalErrorService* service = 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GlobalErrorServiceFactory::GetForProfile(browser()->profile()); 1697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch ProfileOAuth2TokenServiceFactory::GetForProfile(browser()->profile()); 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const int command1 = 1234567; 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // AddGlobalError takes ownership of error1. 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MenuError* error1 = new MenuError(command1); 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) service->AddGlobalError(error1); 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const int command2 = 1234568; 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // AddGlobalError takes ownership of error2. 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MenuError* error2 = new MenuError(command2); 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) service->AddGlobalError(error2); 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 179c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) WrenchMenuModel model(this, browser(), false); 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int index1 = model.GetIndexOfCommandId(command1); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_GT(index1, -1); 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int index2 = model.GetIndexOfCommandId(command2); 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_GT(index2, -1); 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(model.IsEnabledAt(index1)); 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0, error1->execute_count()); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) model.ActivatedAt(index1); 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(1, error1->execute_count()); 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(model.IsEnabledAt(index2)); 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0, error2->execute_count()); 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) model.ActivatedAt(index2); 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(1, error1->execute_count()); 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class EncodingMenuModelTest : public BrowserWithTestWindowTest, 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public MenuModelTest { 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(EncodingMenuModelTest, IsCommandIdCheckedWithNoTabs) { 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EncodingMenuModel model(browser()); 2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(NULL, browser()->tab_strip_model()->GetActiveWebContents()); 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(model.IsCommandIdChecked(IDC_ENCODING_ISO88591)); 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 205