| Index: chrome/browser/extensions/extension_page_actions_module.cc | 
| diff --git a/chrome/browser/extensions/extension_page_actions_module.cc b/chrome/browser/extensions/extension_page_actions_module.cc | 
| index b39ca32c8854ac22efa2f8d66d5dca8107119347..b41386d34816d0f86789ef911836683be7482f8f 100644 | 
| --- a/chrome/browser/extensions/extension_page_actions_module.cc | 
| +++ b/chrome/browser/extensions/extension_page_actions_module.cc | 
| @@ -56,15 +56,14 @@ bool PageActionFunction::SetPageActionEnabled(bool enable) { | 
| } | 
| } | 
|  | 
| -  const ExtensionAction* page_action = | 
| -      dispatcher()->GetExtension()->page_action(); | 
| +  ExtensionAction2* page_action = dispatcher()->GetExtension()->page_action(); | 
| if (!page_action) { | 
| error_ = kNoPageActionError; | 
| return false; | 
| } | 
|  | 
| if (icon_id < 0 || | 
| -      static_cast<size_t>(icon_id) >= page_action->icon_paths().size()) { | 
| +      static_cast<size_t>(icon_id) >= page_action->icon_paths()->size()) { | 
| error_ = (icon_id == 0) ? kNoIconSpecified : kIconIndexOutOfBounds; | 
| return false; | 
| } | 
| @@ -86,7 +85,9 @@ bool PageActionFunction::SetPageActionEnabled(bool enable) { | 
| } | 
|  | 
| // Set visibility and broadcast notifications that the UI should be updated. | 
| -  contents->SetPageActionEnabled(page_action, enable, title, icon_id); | 
| +  page_action->SetIsVisible(tab_id, enable); | 
| +  page_action->SetTitle(tab_id, title); | 
| +  page_action->SetIconIndex(tab_id, icon_id); | 
| contents->PageActionStateChanged(); | 
|  | 
| return true; | 
| @@ -108,17 +109,16 @@ bool PageActionFunction::InitCommon(int tab_id) { | 
| return false; | 
| } | 
|  | 
| -  state_ = contents_->GetOrCreatePageActionState(page_action_); | 
| return true; | 
| } | 
|  | 
| -bool PageActionFunction::SetHidden(bool hidden) { | 
| +bool PageActionFunction::SetVisible(bool visible) { | 
| int tab_id; | 
| EXTENSION_FUNCTION_VALIDATE(args_->GetAsInteger(&tab_id)); | 
| if (!InitCommon(tab_id)) | 
| return false; | 
|  | 
| -  state_->set_hidden(hidden); | 
| +  page_action_->SetIsVisible(tab_id, visible); | 
| contents_->PageActionStateChanged(); | 
| return true; | 
| } | 
| @@ -132,11 +132,11 @@ bool DisablePageActionFunction::RunImpl() { | 
| } | 
|  | 
| bool PageActionShowFunction::RunImpl() { | 
| -  return SetHidden(false); | 
| +  return SetVisible(true); | 
| } | 
|  | 
| bool PageActionHideFunction::RunImpl() { | 
| -  return SetHidden(true); | 
| +  return SetVisible(false); | 
| } | 
|  | 
| bool PageActionSetIconFunction::RunImpl() { | 
| @@ -158,15 +158,15 @@ bool PageActionSetIconFunction::RunImpl() { | 
| scoped_ptr<SkBitmap> bitmap(new SkBitmap); | 
| EXTENSION_FUNCTION_VALIDATE( | 
| IPC::ReadParam(&bitmap_pickle, &iter, bitmap.get())); | 
| -    state_->set_icon(bitmap.release()); | 
| +    page_action_->SetIcon(tab_id, *bitmap); | 
| } else if (args->GetInteger(L"iconIndex", &icon_index)) { | 
| -    if (icon_index < 0 || | 
| -        static_cast<size_t>(icon_index) >= page_action_->icon_paths().size()) { | 
| +    if (icon_index < 0 || static_cast<size_t>(icon_index) >= | 
| +                              page_action_->icon_paths()->size()) { | 
| error_ = kIconIndexOutOfBounds; | 
| return false; | 
| } | 
| -    state_->set_icon(NULL); | 
| -    state_->set_icon_index(icon_index); | 
| +    page_action_->SetIcon(tab_id, SkBitmap()); | 
| +    page_action_->SetIconIndex(tab_id, icon_index); | 
| } else { | 
| EXTENSION_FUNCTION_VALIDATE(false); | 
| } | 
| @@ -187,7 +187,7 @@ bool PageActionSetTitleFunction::RunImpl() { | 
| std::string title; | 
| EXTENSION_FUNCTION_VALIDATE(args->GetString(L"title", &title)); | 
|  | 
| -  state_->set_title(title); | 
| +  page_action_->SetTitle(tab_id, title); | 
| contents_->PageActionStateChanged(); | 
| return true; | 
| } | 
| @@ -213,7 +213,7 @@ bool PageActionSetBadgeBackgroundColorFunction::RunImpl() { | 
|  | 
| SkColor color = SkColorSetARGB(color_array[3], color_array[0], color_array[1], | 
| color_array[2]); | 
| -  state_->set_badge_background_color(color); | 
| +  page_action_->SetBadgeBackgroundColor(tab_id, color); | 
| contents_->PageActionStateChanged(); | 
| return true; | 
| } | 
| @@ -239,7 +239,7 @@ bool PageActionSetBadgeTextColorFunction::RunImpl() { | 
|  | 
| SkColor color = SkColorSetARGB(color_array[3], color_array[0], color_array[1], | 
| color_array[2]); | 
| -  state_->set_badge_text_color(color); | 
| +  page_action_->SetBadgeTextColor(tab_id, color); | 
| contents_->PageActionStateChanged(); | 
| return true; | 
| } | 
| @@ -258,7 +258,7 @@ bool PageActionSetBadgeTextFunction::RunImpl() { | 
| std::string text; | 
| EXTENSION_FUNCTION_VALIDATE(args->GetString(L"text", &text)); | 
|  | 
| -  state_->set_badge_text(text); | 
| +  page_action_->SetBadgeText(tab_id, text); | 
| contents_->PageActionStateChanged(); | 
| return true; | 
| } | 
|  |