190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// found in the LICENSE file. 490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include <set> 690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include <string> 790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "base/pickle.h" 10868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "base/values.h" 124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "extensions/common/permissions/api_permission.h" 134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "extensions/common/permissions/permissions_info.h" 14effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "extensions/common/permissions/usb_device_permission.h" 15effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "extensions/common/permissions/usb_device_permission_data.h" 1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "ipc/ipc_message.h" 1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace extensions { 2090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)TEST(USBDevicePermissionTest, PermissionDataOrder) { 22868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_LT(UsbDevicePermissionData(0x02ad, 0x138c, -1), 23868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) UsbDevicePermissionData(0x02ad, 0x138d, -1)); 24868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_LT(UsbDevicePermissionData(0x02ad, 0x138d, -1), 25868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) UsbDevicePermissionData(0x02ae, 0x138c, -1)); 26868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_LT(UsbDevicePermissionData(0x02ad, 0x138c, -1), 27868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) UsbDevicePermissionData(0x02ad, 0x138c, 0)); 2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#if defined(ENABLE_EXTENSIONS) 3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define MAYBE_PermissionMessage PermissionMessage 3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#else 3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define MAYBE_PermissionMessage DISABLED_PermissionMessage 3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#endif // defined(ENABLE_EXTENSIONS) 3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)TEST(USBDevicePermissionTest, MAYBE_PermissionMessage) { 3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const char* const kMessages[] = { 380529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch "Access the USB device PVR Mass Storage from HUMAX Co., Ltd.", 390529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch "Access the USB device from HUMAX Co., Ltd.", 400529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch "Access the USB device", 4190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) }; 4290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 4390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Prepare data set 4490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) scoped_ptr<base::ListValue> permission_list(new base::ListValue()); 4590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) permission_list->Append( 46868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) UsbDevicePermissionData(0x02ad, 0x138c, -1).ToValue()->DeepCopy()); 4790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) permission_list->Append( 48868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) UsbDevicePermissionData(0x02ad, 0x138d, -1).ToValue()->DeepCopy()); 4990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) permission_list->Append( 50868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) UsbDevicePermissionData(0x02ae, 0x138d, -1).ToValue()->DeepCopy()); 5190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) UsbDevicePermission permission( 5390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) PermissionsInfo::GetInstance()->GetByID(APIPermission::kUsbDevice)); 54c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ASSERT_TRUE(permission.FromValue(permission_list.get(), NULL, NULL)); 5590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) PermissionMessages messages = permission.GetMessages(); 5790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ASSERT_EQ(3U, messages.size()); 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(base::ASCIIToUTF16(kMessages[0]), messages.at(0).message()); 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(base::ASCIIToUTF16(kMessages[1]), messages.at(1).message()); 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(base::ASCIIToUTF16(kMessages[2]), messages.at(2).message()); 6190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 6290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 6390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} // namespace extensions 64