| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/ui/extensions/extension_action_view_controller.h" | 5 #include "chrome/browser/ui/extensions/extension_action_view_controller.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
| (...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 275 | 275 |
| 276 CommandService* command_service = CommandService::Get(browser_->profile()); | 276 CommandService* command_service = CommandService::Get(browser_->profile()); |
| 277 if (extension_action_->action_type() == ActionInfo::TYPE_PAGE) { | 277 if (extension_action_->action_type() == ActionInfo::TYPE_PAGE) { |
| 278 return command_service->GetPageActionCommand( | 278 return command_service->GetPageActionCommand( |
| 279 extension_->id(), CommandService::ACTIVE, command, NULL); | 279 extension_->id(), CommandService::ACTIVE, command, NULL); |
| 280 } | 280 } |
| 281 return command_service->GetBrowserActionCommand( | 281 return command_service->GetBrowserActionCommand( |
| 282 extension_->id(), CommandService::ACTIVE, command, NULL); | 282 extension_->id(), CommandService::ACTIVE, command, NULL); |
| 283 } | 283 } |
| 284 | 284 |
| 285 scoped_ptr<IconWithBadgeImageSource> | 285 std::unique_ptr<IconWithBadgeImageSource> |
| 286 ExtensionActionViewController::GetIconImageSourceForTesting( | 286 ExtensionActionViewController::GetIconImageSourceForTesting( |
| 287 content::WebContents* web_contents, | 287 content::WebContents* web_contents, |
| 288 const gfx::Size& size) { | 288 const gfx::Size& size) { |
| 289 return GetIconImageSource(web_contents, size); | 289 return GetIconImageSource(web_contents, size); |
| 290 } | 290 } |
| 291 | 291 |
| 292 ExtensionActionViewController* | 292 ExtensionActionViewController* |
| 293 ExtensionActionViewController::GetPreferredPopupViewController() { | 293 ExtensionActionViewController::GetPreferredPopupViewController() { |
| 294 if (toolbar_actions_bar_ && toolbar_actions_bar_->in_overflow_mode()) { | 294 if (toolbar_actions_bar_ && toolbar_actions_bar_->in_overflow_mode()) { |
| 295 return static_cast<ExtensionActionViewController*>( | 295 return static_cast<ExtensionActionViewController*>( |
| (...skipping 15 matching lines...) Expand all Loading... |
| 311 // Always hide the current popup, even if it's not owned by this extension. | 311 // Always hide the current popup, even if it's not owned by this extension. |
| 312 // Only one popup should be visible at a time. | 312 // Only one popup should be visible at a time. |
| 313 HideActivePopup(); | 313 HideActivePopup(); |
| 314 | 314 |
| 315 // If we were showing a popup already, then we treat the action to open the | 315 // If we were showing a popup already, then we treat the action to open the |
| 316 // same one as a desire to close it (like clicking a menu button that was | 316 // same one as a desire to close it (like clicking a menu button that was |
| 317 // already open). | 317 // already open). |
| 318 if (already_showing) | 318 if (already_showing) |
| 319 return false; | 319 return false; |
| 320 | 320 |
| 321 scoped_ptr<extensions::ExtensionViewHost> host( | 321 std::unique_ptr<extensions::ExtensionViewHost> host( |
| 322 extensions::ExtensionViewHostFactory::CreatePopupHost(popup_url, | 322 extensions::ExtensionViewHostFactory::CreatePopupHost(popup_url, |
| 323 browser_)); | 323 browser_)); |
| 324 if (!host) | 324 if (!host) |
| 325 return false; | 325 return false; |
| 326 | 326 |
| 327 popup_host_ = host.get(); | 327 popup_host_ = host.get(); |
| 328 popup_host_observer_.Add(popup_host_); | 328 popup_host_observer_.Add(popup_host_); |
| 329 if (toolbar_actions_bar_) | 329 if (toolbar_actions_bar_) |
| 330 toolbar_actions_bar_->SetPopupOwner(this); | 330 toolbar_actions_bar_->SetPopupOwner(this); |
| 331 | 331 |
| 332 if (toolbar_actions_bar_ && | 332 if (toolbar_actions_bar_ && |
| 333 !toolbar_actions_bar_->IsActionVisibleOnMainBar(this) && | 333 !toolbar_actions_bar_->IsActionVisibleOnMainBar(this) && |
| 334 extensions::FeatureSwitch::extension_action_redesign()->IsEnabled()) { | 334 extensions::FeatureSwitch::extension_action_redesign()->IsEnabled()) { |
| 335 platform_delegate_->CloseOverflowMenu(); | 335 platform_delegate_->CloseOverflowMenu(); |
| 336 toolbar_actions_bar_->PopOutAction( | 336 toolbar_actions_bar_->PopOutAction( |
| 337 this, | 337 this, |
| 338 show_action == SHOW_POPUP_AND_INSPECT, | 338 show_action == SHOW_POPUP_AND_INSPECT, |
| 339 base::Bind(&ExtensionActionViewController::ShowPopup, | 339 base::Bind(&ExtensionActionViewController::ShowPopup, |
| 340 weak_factory_.GetWeakPtr(), base::Passed(std::move(host)), | 340 weak_factory_.GetWeakPtr(), base::Passed(std::move(host)), |
| 341 grant_tab_permissions, show_action)); | 341 grant_tab_permissions, show_action)); |
| 342 } else { | 342 } else { |
| 343 ShowPopup(std::move(host), grant_tab_permissions, show_action); | 343 ShowPopup(std::move(host), grant_tab_permissions, show_action); |
| 344 } | 344 } |
| 345 | 345 |
| 346 return true; | 346 return true; |
| 347 } | 347 } |
| 348 | 348 |
| 349 void ExtensionActionViewController::ShowPopup( | 349 void ExtensionActionViewController::ShowPopup( |
| 350 scoped_ptr<extensions::ExtensionViewHost> popup_host, | 350 std::unique_ptr<extensions::ExtensionViewHost> popup_host, |
| 351 bool grant_tab_permissions, | 351 bool grant_tab_permissions, |
| 352 PopupShowAction show_action) { | 352 PopupShowAction show_action) { |
| 353 // It's possible that the popup should be closed before it finishes opening | 353 // It's possible that the popup should be closed before it finishes opening |
| 354 // (since it can open asynchronously). Check before proceeding. | 354 // (since it can open asynchronously). Check before proceeding. |
| 355 if (!popup_host_) | 355 if (!popup_host_) |
| 356 return; | 356 return; |
| 357 platform_delegate_->ShowPopup(std::move(popup_host), grant_tab_permissions, | 357 platform_delegate_->ShowPopup(std::move(popup_host), grant_tab_permissions, |
| 358 show_action); | 358 show_action); |
| 359 view_delegate_->OnPopupShown(grant_tab_permissions); | 359 view_delegate_->OnPopupShown(grant_tab_permissions); |
| 360 } | 360 } |
| 361 | 361 |
| 362 void ExtensionActionViewController::OnPopupClosed() { | 362 void ExtensionActionViewController::OnPopupClosed() { |
| 363 popup_host_observer_.Remove(popup_host_); | 363 popup_host_observer_.Remove(popup_host_); |
| 364 popup_host_ = nullptr; | 364 popup_host_ = nullptr; |
| 365 if (toolbar_actions_bar_) { | 365 if (toolbar_actions_bar_) { |
| 366 toolbar_actions_bar_->SetPopupOwner(nullptr); | 366 toolbar_actions_bar_->SetPopupOwner(nullptr); |
| 367 if (toolbar_actions_bar_->popped_out_action() == this && | 367 if (toolbar_actions_bar_->popped_out_action() == this && |
| 368 !view_delegate_->IsMenuRunning()) | 368 !view_delegate_->IsMenuRunning()) |
| 369 toolbar_actions_bar_->UndoPopOut(); | 369 toolbar_actions_bar_->UndoPopOut(); |
| 370 } | 370 } |
| 371 view_delegate_->OnPopupClosed(); | 371 view_delegate_->OnPopupClosed(); |
| 372 } | 372 } |
| 373 | 373 |
| 374 scoped_ptr<IconWithBadgeImageSource> | 374 std::unique_ptr<IconWithBadgeImageSource> |
| 375 ExtensionActionViewController::GetIconImageSource( | 375 ExtensionActionViewController::GetIconImageSource( |
| 376 content::WebContents* web_contents, | 376 content::WebContents* web_contents, |
| 377 const gfx::Size& size) { | 377 const gfx::Size& size) { |
| 378 int tab_id = SessionTabHelper::IdForTab(web_contents); | 378 int tab_id = SessionTabHelper::IdForTab(web_contents); |
| 379 scoped_ptr<IconWithBadgeImageSource> image_source( | 379 std::unique_ptr<IconWithBadgeImageSource> image_source( |
| 380 new IconWithBadgeImageSource(size)); | 380 new IconWithBadgeImageSource(size)); |
| 381 | 381 |
| 382 image_source->SetIcon(icon_factory_.GetIcon(tab_id)); | 382 image_source->SetIcon(icon_factory_.GetIcon(tab_id)); |
| 383 | 383 |
| 384 scoped_ptr<IconWithBadgeImageSource::Badge> badge; | 384 std::unique_ptr<IconWithBadgeImageSource::Badge> badge; |
| 385 std::string badge_text = extension_action_->GetBadgeText(tab_id); | 385 std::string badge_text = extension_action_->GetBadgeText(tab_id); |
| 386 if (!badge_text.empty()) { | 386 if (!badge_text.empty()) { |
| 387 badge.reset(new IconWithBadgeImageSource::Badge( | 387 badge.reset(new IconWithBadgeImageSource::Badge( |
| 388 badge_text, | 388 badge_text, |
| 389 extension_action_->GetBadgeTextColor(tab_id), | 389 extension_action_->GetBadgeTextColor(tab_id), |
| 390 extension_action_->GetBadgeBackgroundColor(tab_id))); | 390 extension_action_->GetBadgeBackgroundColor(tab_id))); |
| 391 } | 391 } |
| 392 image_source->SetBadge(std::move(badge)); | 392 image_source->SetBadge(std::move(badge)); |
| 393 | 393 |
| 394 // Greyscaling disabled actions and having a special wants-to-run decoration | 394 // Greyscaling disabled actions and having a special wants-to-run decoration |
| (...skipping 26 matching lines...) Expand all Loading... |
| 421 extension_action_->GetIsVisible( | 421 extension_action_->GetIsVisible( |
| 422 SessionTabHelper::IdForTab(web_contents)); | 422 SessionTabHelper::IdForTab(web_contents)); |
| 423 } | 423 } |
| 424 | 424 |
| 425 bool ExtensionActionViewController::HasBeenBlocked( | 425 bool ExtensionActionViewController::HasBeenBlocked( |
| 426 content::WebContents* web_contents) const { | 426 content::WebContents* web_contents) const { |
| 427 ExtensionActionRunner* action_runner = | 427 ExtensionActionRunner* action_runner = |
| 428 ExtensionActionRunner::GetForWebContents(web_contents); | 428 ExtensionActionRunner::GetForWebContents(web_contents); |
| 429 return action_runner && action_runner->WantsToRun(extension()); | 429 return action_runner && action_runner->WantsToRun(extension()); |
| 430 } | 430 } |
| OLD | NEW |