OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/tab_contents/spelling_menu_observer.h" | 5 #include "chrome/browser/tab_contents/spelling_menu_observer.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 const string16& label, | 55 const string16& label, |
56 ui::MenuModel* model) OVERRIDE; | 56 ui::MenuModel* model) OVERRIDE; |
57 virtual void UpdateMenuItem(int command_id, | 57 virtual void UpdateMenuItem(int command_id, |
58 bool enabled, | 58 bool enabled, |
59 bool hidden, | 59 bool hidden, |
60 const string16& title) OVERRIDE; | 60 const string16& title) OVERRIDE; |
61 virtual RenderViewHost* GetRenderViewHost() const OVERRIDE; | 61 virtual RenderViewHost* GetRenderViewHost() const OVERRIDE; |
62 virtual WebContents* GetWebContents() const OVERRIDE; | 62 virtual WebContents* GetWebContents() const OVERRIDE; |
63 virtual Profile* GetProfile() const OVERRIDE; | 63 virtual Profile* GetProfile() const OVERRIDE; |
64 | 64 |
65 // Create a testing URL request context. | |
66 void CreateRequestContext() { | |
67 profile_->CreateRequestContext(); | |
68 } | |
69 | |
70 // Attaches a RenderViewContextMenuObserver to be tested. | 65 // Attaches a RenderViewContextMenuObserver to be tested. |
71 void SetObserver(RenderViewContextMenuObserver* observer); | 66 void SetObserver(RenderViewContextMenuObserver* observer); |
72 | 67 |
73 // Returns the number of items added by the test. | 68 // Returns the number of items added by the test. |
74 size_t GetMenuSize() const; | 69 size_t GetMenuSize() const; |
75 | 70 |
76 // Returns the i-th item. | 71 // Returns the i-th item. |
77 bool GetMenuItem(size_t i, MockMenuItem* item) const; | 72 bool GetMenuItem(size_t i, MockMenuItem* item) const; |
78 | 73 |
79 // Returns the writable profile used in this test. | 74 // Returns the writable profile used in this test. |
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 EXPECT_FALSE(item.hidden); | 315 EXPECT_FALSE(item.hidden); |
321 } | 316 } |
322 | 317 |
323 // Test that there will be a separator after "no suggestions" if | 318 // Test that there will be a separator after "no suggestions" if |
324 // SpellingServiceClient::SUGGEST is on. | 319 // SpellingServiceClient::SUGGEST is on. |
325 IN_PROC_BROWSER_TEST_F(SpellingMenuObserverTest, SeparatorAfterSuggestions) { | 320 IN_PROC_BROWSER_TEST_F(SpellingMenuObserverTest, SeparatorAfterSuggestions) { |
326 menu()->GetPrefs()->SetBoolean(prefs::kSpellCheckUseSpellingService, true); | 321 menu()->GetPrefs()->SetBoolean(prefs::kSpellCheckUseSpellingService, true); |
327 CommandLine* command_line = CommandLine::ForCurrentProcess(); | 322 CommandLine* command_line = CommandLine::ForCurrentProcess(); |
328 command_line->AppendSwitch(switches::kUseSpellingSuggestions); | 323 command_line->AppendSwitch(switches::kUseSpellingSuggestions); |
329 | 324 |
330 // Make sure we can pretend to handle the JSON request. | |
331 menu()->CreateRequestContext(); | |
332 | |
333 // Force a non-empty locale so SUGGEST is available. | 325 // Force a non-empty locale so SUGGEST is available. |
334 menu()->GetPrefs()->SetString(prefs::kSpellCheckDictionary, "en"); | 326 menu()->GetPrefs()->SetString(prefs::kSpellCheckDictionary, "en"); |
335 EXPECT_TRUE(SpellingServiceClient::IsAvailable(menu()->GetProfile(), | 327 EXPECT_TRUE(SpellingServiceClient::IsAvailable(menu()->GetProfile(), |
336 SpellingServiceClient::SUGGEST)); | 328 SpellingServiceClient::SUGGEST)); |
337 | 329 |
338 InitMenu("jhhj", NULL); | 330 InitMenu("jhhj", NULL); |
339 | 331 |
340 // The test should see a top separator, "No spelling suggestions", | 332 // The test should see a top separator, "No spelling suggestions", |
341 // "No more Google suggestions" (from SpellingService) and a separator | 333 // "No more Google suggestions" (from SpellingService) and a separator |
342 // as the first four items, then possibly more (not relevant here). | 334 // as the first four items, then possibly more (not relevant here). |
(...skipping 20 matching lines...) Expand all Loading... |
363 EXPECT_FALSE(item.enabled); | 355 EXPECT_FALSE(item.enabled); |
364 EXPECT_FALSE(item.hidden); | 356 EXPECT_FALSE(item.hidden); |
365 } | 357 } |
366 | 358 |
367 // Test that we don't show "No more suggestions from Google" if the spelling | 359 // Test that we don't show "No more suggestions from Google" if the spelling |
368 // service is enabled and that there is only one suggestion. | 360 // service is enabled and that there is only one suggestion. |
369 IN_PROC_BROWSER_TEST_F(SpellingMenuObserverTest, | 361 IN_PROC_BROWSER_TEST_F(SpellingMenuObserverTest, |
370 NoMoreSuggestionsNotDisplayed) { | 362 NoMoreSuggestionsNotDisplayed) { |
371 menu()->GetPrefs()->SetBoolean(prefs::kSpellCheckUseSpellingService, true); | 363 menu()->GetPrefs()->SetBoolean(prefs::kSpellCheckUseSpellingService, true); |
372 | 364 |
373 // Make sure we can pretend to handle the JSON request. | |
374 menu()->CreateRequestContext(); | |
375 | |
376 // Force a non-empty locale so SPELLCHECK is available. | 365 // Force a non-empty locale so SPELLCHECK is available. |
377 menu()->GetPrefs()->SetString(prefs::kSpellCheckDictionary, "en"); | 366 menu()->GetPrefs()->SetString(prefs::kSpellCheckDictionary, "en"); |
378 EXPECT_TRUE(SpellingServiceClient::IsAvailable(menu()->GetProfile(), | 367 EXPECT_TRUE(SpellingServiceClient::IsAvailable(menu()->GetProfile(), |
379 SpellingServiceClient::SPELLCHECK)); | 368 SpellingServiceClient::SPELLCHECK)); |
380 InitMenu("asdfkj", "asdf"); | 369 InitMenu("asdfkj", "asdf"); |
381 | 370 |
382 // The test should see a separator, a suggestion and another separator | 371 // The test should see a separator, a suggestion and another separator |
383 // as the first two items, then possibly more (not relevant here). | 372 // as the first two items, then possibly more (not relevant here). |
384 EXPECT_LT(3U, menu()->GetMenuSize()); | 373 EXPECT_LT(3U, menu()->GetMenuSize()); |
385 | 374 |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
471 EXPECT_LT(static_cast<size_t>(5), menu()->GetMenuSize()); | 460 EXPECT_LT(static_cast<size_t>(5), menu()->GetMenuSize()); |
472 // This test only cares that the first one is a separator. | 461 // This test only cares that the first one is a separator. |
473 menu()->GetMenuItem(0, &item); | 462 menu()->GetMenuItem(0, &item); |
474 EXPECT_EQ(-1, item.command_id); | 463 EXPECT_EQ(-1, item.command_id); |
475 | 464 |
476 // Case #3. Misspelled word, suggestion service is on. | 465 // Case #3. Misspelled word, suggestion service is on. |
477 Reset(); | 466 Reset(); |
478 menu()->GetPrefs()->SetBoolean(prefs::kSpellCheckUseSpellingService, true); | 467 menu()->GetPrefs()->SetBoolean(prefs::kSpellCheckUseSpellingService, true); |
479 CommandLine* command_line = CommandLine::ForCurrentProcess(); | 468 CommandLine* command_line = CommandLine::ForCurrentProcess(); |
480 command_line->AppendSwitch(switches::kUseSpellingSuggestions); | 469 command_line->AppendSwitch(switches::kUseSpellingSuggestions); |
481 menu()->CreateRequestContext(); | |
482 InitMenu("asdfkj", NULL); | 470 InitMenu("asdfkj", NULL); |
483 | 471 |
484 // Should have at least 2 entries. Separator, suggestion. | 472 // Should have at least 2 entries. Separator, suggestion. |
485 EXPECT_LT(2U, menu()->GetMenuSize()); | 473 EXPECT_LT(2U, menu()->GetMenuSize()); |
486 menu()->GetMenuItem(0, &item); | 474 menu()->GetMenuItem(0, &item); |
487 EXPECT_EQ(-1, item.command_id); | 475 EXPECT_EQ(-1, item.command_id); |
488 menu()->GetMenuItem(1, &item); | 476 menu()->GetMenuItem(1, &item); |
489 EXPECT_EQ(IDC_CONTENT_CONTEXT_SPELLING_SUGGESTION, item.command_id); | 477 EXPECT_EQ(IDC_CONTENT_CONTEXT_SPELLING_SUGGESTION, item.command_id); |
490 } | 478 } |
OLD | NEW |