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> |
| 8 |
7 #include "base/logging.h" | 9 #include "base/logging.h" |
8 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
9 #include "chrome/browser/extensions/api/commands/command_service.h" | 11 #include "chrome/browser/extensions/api/commands/command_service.h" |
10 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h" | 12 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h" |
11 #include "chrome/browser/extensions/extension_action.h" | 13 #include "chrome/browser/extensions/extension_action.h" |
12 #include "chrome/browser/extensions/extension_view.h" | 14 #include "chrome/browser/extensions/extension_view.h" |
13 #include "chrome/browser/extensions/extension_view_host.h" | 15 #include "chrome/browser/extensions/extension_view_host.h" |
14 #include "chrome/browser/extensions/extension_view_host_factory.h" | 16 #include "chrome/browser/extensions/extension_view_host_factory.h" |
15 #include "chrome/browser/profiles/profile.h" | 17 #include "chrome/browser/profiles/profile.h" |
16 #include "chrome/browser/sessions/session_tab_helper.h" | 18 #include "chrome/browser/sessions/session_tab_helper.h" |
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
314 if (toolbar_actions_bar_) | 316 if (toolbar_actions_bar_) |
315 toolbar_actions_bar_->SetPopupOwner(this); | 317 toolbar_actions_bar_->SetPopupOwner(this); |
316 | 318 |
317 if (toolbar_actions_bar_ && | 319 if (toolbar_actions_bar_ && |
318 !toolbar_actions_bar_->IsActionVisibleOnMainBar(this) && | 320 !toolbar_actions_bar_->IsActionVisibleOnMainBar(this) && |
319 extensions::FeatureSwitch::extension_action_redesign()->IsEnabled()) { | 321 extensions::FeatureSwitch::extension_action_redesign()->IsEnabled()) { |
320 platform_delegate_->CloseOverflowMenu(); | 322 platform_delegate_->CloseOverflowMenu(); |
321 toolbar_actions_bar_->PopOutAction( | 323 toolbar_actions_bar_->PopOutAction( |
322 this, | 324 this, |
323 base::Bind(&ExtensionActionViewController::ShowPopup, | 325 base::Bind(&ExtensionActionViewController::ShowPopup, |
324 weak_factory_.GetWeakPtr(), | 326 weak_factory_.GetWeakPtr(), base::Passed(std::move(host)), |
325 base::Passed(host.Pass()), | 327 grant_tab_permissions, show_action)); |
326 grant_tab_permissions, | |
327 show_action)); | |
328 } else { | 328 } else { |
329 ShowPopup(host.Pass(), grant_tab_permissions, show_action); | 329 ShowPopup(std::move(host), grant_tab_permissions, show_action); |
330 } | 330 } |
331 | 331 |
332 return true; | 332 return true; |
333 } | 333 } |
334 | 334 |
335 void ExtensionActionViewController::ShowPopup( | 335 void ExtensionActionViewController::ShowPopup( |
336 scoped_ptr<extensions::ExtensionViewHost> popup_host, | 336 scoped_ptr<extensions::ExtensionViewHost> popup_host, |
337 bool grant_tab_permissions, | 337 bool grant_tab_permissions, |
338 PopupShowAction show_action) { | 338 PopupShowAction show_action) { |
339 // It's possible that the popup should be closed before it finishes opening | 339 // It's possible that the popup should be closed before it finishes opening |
340 // (since it can open asynchronously). Check before proceeding. | 340 // (since it can open asynchronously). Check before proceeding. |
341 if (!popup_host_) | 341 if (!popup_host_) |
342 return; | 342 return; |
343 platform_delegate_->ShowPopup( | 343 platform_delegate_->ShowPopup(std::move(popup_host), grant_tab_permissions, |
344 popup_host.Pass(), grant_tab_permissions, show_action); | 344 show_action); |
345 view_delegate_->OnPopupShown(grant_tab_permissions); | 345 view_delegate_->OnPopupShown(grant_tab_permissions); |
346 } | 346 } |
347 | 347 |
348 void ExtensionActionViewController::OnPopupClosed() { | 348 void ExtensionActionViewController::OnPopupClosed() { |
349 popup_host_observer_.Remove(popup_host_); | 349 popup_host_observer_.Remove(popup_host_); |
350 popup_host_ = nullptr; | 350 popup_host_ = nullptr; |
351 if (toolbar_actions_bar_) { | 351 if (toolbar_actions_bar_) { |
352 toolbar_actions_bar_->SetPopupOwner(nullptr); | 352 toolbar_actions_bar_->SetPopupOwner(nullptr); |
353 if (toolbar_actions_bar_->popped_out_action() == this && | 353 if (toolbar_actions_bar_->popped_out_action() == this && |
354 !view_delegate_->IsMenuRunning()) | 354 !view_delegate_->IsMenuRunning()) |
(...skipping 13 matching lines...) Expand all Loading... |
368 image_source->SetIcon(icon_factory_.GetIcon(tab_id)); | 368 image_source->SetIcon(icon_factory_.GetIcon(tab_id)); |
369 | 369 |
370 scoped_ptr<IconWithBadgeImageSource::Badge> badge; | 370 scoped_ptr<IconWithBadgeImageSource::Badge> badge; |
371 std::string badge_text = extension_action_->GetBadgeText(tab_id); | 371 std::string badge_text = extension_action_->GetBadgeText(tab_id); |
372 if (!badge_text.empty()) { | 372 if (!badge_text.empty()) { |
373 badge.reset(new IconWithBadgeImageSource::Badge( | 373 badge.reset(new IconWithBadgeImageSource::Badge( |
374 badge_text, | 374 badge_text, |
375 extension_action_->GetBadgeTextColor(tab_id), | 375 extension_action_->GetBadgeTextColor(tab_id), |
376 extension_action_->GetBadgeBackgroundColor(tab_id))); | 376 extension_action_->GetBadgeBackgroundColor(tab_id))); |
377 } | 377 } |
378 image_source->SetBadge(badge.Pass()); | 378 image_source->SetBadge(std::move(badge)); |
379 | 379 |
380 // Greyscaling disabled actions and having a special wants-to-run decoration | 380 // Greyscaling disabled actions and having a special wants-to-run decoration |
381 // are gated on the toolbar redesign. | 381 // are gated on the toolbar redesign. |
382 if (extensions::FeatureSwitch::extension_action_redesign()->IsEnabled()) { | 382 if (extensions::FeatureSwitch::extension_action_redesign()->IsEnabled()) { |
383 // If the extension doesn't want to run on the active web contents, we | 383 // If the extension doesn't want to run on the active web contents, we |
384 // grayscale it to indicate that. | 384 // grayscale it to indicate that. |
385 image_source->set_grayscale(!IsEnabled(web_contents)); | 385 image_source->set_grayscale(!IsEnabled(web_contents)); |
386 // If the action *does* want to run on the active web contents and is also | 386 // If the action *does* want to run on the active web contents and is also |
387 // overflowed, we add a decoration so that the user can see which overflowed | 387 // overflowed, we add a decoration so that the user can see which overflowed |
388 // action wants to run (since they wouldn't be able to see the change from | 388 // action wants to run (since they wouldn't be able to see the change from |
389 // grayscale to color). | 389 // grayscale to color). |
390 bool is_overflow = | 390 bool is_overflow = |
391 toolbar_actions_bar_ && toolbar_actions_bar_->in_overflow_mode(); | 391 toolbar_actions_bar_ && toolbar_actions_bar_->in_overflow_mode(); |
392 image_source->set_paint_decoration(WantsToRun(web_contents) && is_overflow); | 392 image_source->set_paint_decoration(WantsToRun(web_contents) && is_overflow); |
393 } | 393 } |
394 | 394 |
395 return image_source.Pass(); | 395 return image_source; |
396 } | 396 } |
OLD | NEW |