Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(128)

Side by Side Diff: chrome/browser/tab_contents/tab_contents.cc

Issue 269079: Implement new page action API. (Closed)
Patch Set: compile fixes Created 11 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/browser/tab_contents/tab_contents.h ('k') | chrome/browser/views/location_bar_view.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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/tab_contents.h" 5 #include "chrome/browser/tab_contents/tab_contents.h"
6 6
7 #include "app/l10n_util.h" 7 #include "app/l10n_util.h"
8 #include "app/resource_bundle.h" 8 #include "app/resource_bundle.h"
9 #include "base/file_version_info.h" 9 #include "base/file_version_info.h"
10 #include "base/process_util.h" 10 #include "base/process_util.h"
(...skipping 591 matching lines...) Expand 10 before | Expand all | Expand 10 after
602 602
603 is_crashed_ = state; 603 is_crashed_ = state;
604 NotifyNavigationStateChanged(INVALIDATE_TAB); 604 NotifyNavigationStateChanged(INVALIDATE_TAB);
605 } 605 }
606 606
607 void TabContents::SetPageActionEnabled(const ExtensionAction* page_action, 607 void TabContents::SetPageActionEnabled(const ExtensionAction* page_action,
608 bool enable, 608 bool enable,
609 const std::string& title, 609 const std::string& title,
610 int icon_id) { 610 int icon_id) {
611 DCHECK(page_action); 611 DCHECK(page_action);
612 612 ExtensionActionState* state = GetOrCreatePageActionState(page_action);
613 if (!enable && 613 state->set_hidden(!enable);
614 enabled_page_actions_.end() == enabled_page_actions_.find(page_action)) { 614 state->set_title(title);
615 return; // Don't need to disable twice. 615 state->set_icon_index(icon_id);
616 } 616 state->set_icon(NULL);
617
618 if (enable) {
619 enabled_page_actions_[page_action].reset(
620 new ExtensionActionState(title, icon_id));
621 } else {
622 enabled_page_actions_.erase(page_action);
623 }
624 } 617 }
625 618
626 const ExtensionActionState* TabContents::GetPageActionState( 619 const ExtensionActionState* TabContents::GetPageActionState(
627 const ExtensionAction* page_action) { 620 const ExtensionAction* page_action) {
628 if (enabled_page_actions_.end() == enabled_page_actions_.find(page_action)) 621 if (page_actions_.end() == page_actions_.find(page_action))
629 return NULL; 622 return NULL;
630 623
631 return enabled_page_actions_[page_action].get(); 624 return page_actions_[page_action].get();
625 }
626
627 ExtensionActionState* TabContents::GetOrCreatePageActionState(
628 const ExtensionAction* page_action) {
629 if (page_actions_.end() == page_actions_.find(page_action)) {
630 page_actions_[page_action].reset(
631 new ExtensionActionState(page_action->title(), 0));
632 }
633
634 return page_actions_[page_action].get();
635 }
636
637 void TabContents::PageActionStateChanged() {
638 NotifyNavigationStateChanged(TabContents::INVALIDATE_PAGE_ACTIONS);
632 } 639 }
633 640
634 void TabContents::NotifyNavigationStateChanged(unsigned changed_flags) { 641 void TabContents::NotifyNavigationStateChanged(unsigned changed_flags) {
635 if (delegate_) 642 if (delegate_)
636 delegate_->NavigationStateChanged(this, changed_flags); 643 delegate_->NavigationStateChanged(this, changed_flags);
637 } 644 }
638 645
639 void TabContents::DidBecomeSelected() { 646 void TabContents::DidBecomeSelected() {
640 controller_.SetActive(true); 647 controller_.SetActive(true);
641 if (render_widget_host_view()) { 648 if (render_widget_host_view()) {
(...skipping 751 matching lines...) Expand 10 before | Expand all | Expand 10 after
1393 // the commit. 1400 // the commit.
1394 GenerateKeywordIfNecessary(params); 1401 GenerateKeywordIfNecessary(params);
1395 1402
1396 // Allow the new page to set the title again. 1403 // Allow the new page to set the title again.
1397 received_page_title_ = false; 1404 received_page_title_ = false;
1398 1405
1399 // Get the favicon, either from history or request it from the net. 1406 // Get the favicon, either from history or request it from the net.
1400 fav_icon_helper_.FetchFavIcon(details.entry->url()); 1407 fav_icon_helper_.FetchFavIcon(details.entry->url());
1401 1408
1402 // Disable all page actions, unless this is an in-page navigation. 1409 // Disable all page actions, unless this is an in-page navigation.
1403 if (!enabled_page_actions_.empty()) { 1410 if (!page_actions_.empty()) {
1404 url_canon::Replacements<char> replacements; 1411 url_canon::Replacements<char> replacements;
1405 replacements.ClearRef(); 1412 replacements.ClearRef();
1406 if (params.url.ReplaceComponents(replacements) != 1413 if (params.url.ReplaceComponents(replacements) !=
1407 params.referrer.ReplaceComponents(replacements)) { 1414 params.referrer.ReplaceComponents(replacements)) {
1408 enabled_page_actions_.clear(); 1415 page_actions_.clear();
1409 } 1416 }
1410 } 1417 }
1411 1418
1412 // Close constrained popups if necessary. 1419 // Close constrained popups if necessary.
1413 MaybeCloseChildWindows(details.previous_url, details.entry->url()); 1420 MaybeCloseChildWindows(details.previous_url, details.entry->url());
1414 1421
1415 // Update the starred state. 1422 // Update the starred state.
1416 UpdateStarredStateForCurrentURL(); 1423 UpdateStarredStateForCurrentURL();
1417 } 1424 }
1418 1425
(...skipping 1199 matching lines...) Expand 10 before | Expand all | Expand 10 after
2618 #endif 2625 #endif
2619 2626
2620 default: 2627 default:
2621 NOTREACHED(); 2628 NOTREACHED();
2622 } 2629 }
2623 } 2630 }
2624 2631
2625 void TabContents::set_encoding(const std::string& encoding) { 2632 void TabContents::set_encoding(const std::string& encoding) {
2626 encoding_ = CharacterEncoding::GetCanonicalEncodingNameByAliasName(encoding); 2633 encoding_ = CharacterEncoding::GetCanonicalEncodingNameByAliasName(encoding);
2627 } 2634 }
2628
OLDNEW
« no previous file with comments | « chrome/browser/tab_contents/tab_contents.h ('k') | chrome/browser/views/location_bar_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698