Chromium Code Reviews| 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/extensions/api/extension_action/extension_action_api.h" | 5 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h" |
| 6 | 6 |
| 7 #include "base/base64.h" | 7 #include "base/base64.h" |
| 8 #include "base/lazy_instance.h" | 8 #include "base/lazy_instance.h" |
| 9 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
| 10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
| (...skipping 653 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 664 bool ExtensionActionHideFunction::RunExtensionAction() { | 664 bool ExtensionActionHideFunction::RunExtensionAction() { |
| 665 return SetVisible(false); | 665 return SetVisible(false); |
| 666 } | 666 } |
| 667 | 667 |
| 668 bool ExtensionActionSetIconFunction::RunExtensionAction() { | 668 bool ExtensionActionSetIconFunction::RunExtensionAction() { |
| 669 EXTENSION_FUNCTION_VALIDATE(details_); | 669 EXTENSION_FUNCTION_VALIDATE(details_); |
| 670 | 670 |
| 671 // setIcon can take a variant argument: either a dictionary of canvas | 671 // setIcon can take a variant argument: either a dictionary of canvas |
| 672 // ImageData, or an icon index. | 672 // ImageData, or an icon index. |
| 673 base::DictionaryValue* canvas_set = NULL; | 673 base::DictionaryValue* canvas_set = NULL; |
| 674 int icon_index; | |
| 675 if (details_->GetDictionary("imageData", &canvas_set)) { | 674 if (details_->GetDictionary("imageData", &canvas_set)) { |
| 676 gfx::ImageSkia icon; | 675 gfx::ImageSkia icon; |
| 677 // Extract icon representations from the ImageDataSet dictionary. | 676 // Extract icon representations from the ImageDataSet dictionary. |
| 678 for (size_t i = 0; i < arraysize(kIconSizes); i++) { | 677 for (size_t i = 0; i < arraysize(kIconSizes); i++) { |
| 679 base::BinaryValue* binary; | 678 std::string binary_string64; |
| 680 if (canvas_set->GetBinary(kIconSizes[i].size_string, &binary)) { | 679 if (canvas_set->GetString(kIconSizes[i].size_string, &binary_string64)) { |
| 681 IPC::Message pickle(binary->GetBuffer(), binary->GetSize()); | 680 std::string binary_data; |
| 681 if (!base::Base64Decode(binary_string64, &binary_data)) | |
| 682 return false; | |
| 683 | |
| 684 IPC::Message pickle(binary_data.c_str(), binary_data.length()); | |
|
not at google - send to devlin
2014/08/19 00:04:43
You should only need to do this Binary -> std::str
gpdavis
2014/08/19 00:54:15
You don't think we should keep it this way so it w
not at google - send to devlin
2014/08/19 17:32:29
There are 2 things here:
(1) The serialization for
| |
| 682 PickleIterator iter(pickle); | 685 PickleIterator iter(pickle); |
| 683 SkBitmap bitmap; | 686 SkBitmap bitmap; |
| 684 EXTENSION_FUNCTION_VALIDATE(IPC::ReadParam(&pickle, &iter, &bitmap)); | 687 EXTENSION_FUNCTION_VALIDATE(IPC::ReadParam(&pickle, &iter, &bitmap)); |
| 685 CHECK(!bitmap.isNull()); | 688 CHECK(!bitmap.isNull()); |
| 686 float scale = ui::GetScaleForScaleFactor(kIconSizes[i].scale); | 689 float scale = ui::GetScaleForScaleFactor(kIconSizes[i].scale); |
| 687 icon.AddRepresentation(gfx::ImageSkiaRep(bitmap, scale)); | 690 icon.AddRepresentation(gfx::ImageSkiaRep(bitmap, scale)); |
| 688 } | 691 } |
| 689 } | 692 } |
| 690 | 693 |
| 691 extension_action_->SetIcon(tab_id_, gfx::Image(icon)); | 694 extension_action_->SetIcon(tab_id_, gfx::Image(icon)); |
| 692 } else if (details_->GetInteger("iconIndex", &icon_index)) { | 695 } else if (details_->HasKey("iconIndex")) { |
| 693 // Obsolete argument: ignore it. | 696 // Obsolete argument: ignore it. |
| 694 return true; | 697 return true; |
| 695 } else { | 698 } else { |
| 696 EXTENSION_FUNCTION_VALIDATE(false); | 699 EXTENSION_FUNCTION_VALIDATE(false); |
| 697 } | 700 } |
| 698 NotifyChange(); | 701 NotifyChange(); |
| 699 return true; | 702 return true; |
| 700 } | 703 } |
| 701 | 704 |
| 702 bool ExtensionActionSetTitleFunction::RunExtensionAction() { | 705 bool ExtensionActionSetTitleFunction::RunExtensionAction() { |
| (...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 915 return true; | 918 return true; |
| 916 } | 919 } |
| 917 | 920 |
| 918 bool EnablePageActionsFunction::RunSync() { | 921 bool EnablePageActionsFunction::RunSync() { |
| 919 return SetPageActionEnabled(true); | 922 return SetPageActionEnabled(true); |
| 920 } | 923 } |
| 921 | 924 |
| 922 bool DisablePageActionsFunction::RunSync() { | 925 bool DisablePageActionsFunction::RunSync() { |
| 923 return SetPageActionEnabled(false); | 926 return SetPageActionEnabled(false); |
| 924 } | 927 } |
| OLD | NEW |