| 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 "base/message_loop/message_loop.h" | 5 #include "base/message_loop/message_loop.h" |
| 6 #include "ppapi/c/dev/ppb_file_chooser_dev.h" | 6 #include "ppapi/c/dev/ppb_file_chooser_dev.h" |
| 7 #include "ppapi/c/pp_errors.h" | 7 #include "ppapi/c/pp_errors.h" |
| 8 #include "ppapi/c/ppb_file_ref.h" | |
| 9 #include "ppapi/proxy/file_chooser_resource.h" | 8 #include "ppapi/proxy/file_chooser_resource.h" |
| 10 #include "ppapi/proxy/locking_resource_releaser.h" | 9 #include "ppapi/proxy/locking_resource_releaser.h" |
| 11 #include "ppapi/proxy/ppapi_messages.h" | 10 #include "ppapi/proxy/ppapi_messages.h" |
| 12 #include "ppapi/proxy/ppapi_proxy_test.h" | 11 #include "ppapi/proxy/ppapi_proxy_test.h" |
| 13 #include "ppapi/shared_impl/proxy_lock.h" | 12 #include "ppapi/shared_impl/proxy_lock.h" |
| 14 #include "ppapi/shared_impl/scoped_pp_var.h" | 13 #include "ppapi/shared_impl/scoped_pp_var.h" |
| 15 #include "ppapi/shared_impl/var.h" | 14 #include "ppapi/shared_impl/var.h" |
| 16 #include "ppapi/thunk/thunk.h" | 15 #include "ppapi/thunk/thunk.h" |
| 17 | 16 |
| 18 namespace ppapi { | 17 namespace ppapi { |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 85 ResourceMessageCallParams params; | 84 ResourceMessageCallParams params; |
| 86 IPC::Message msg; | 85 IPC::Message msg; |
| 87 ASSERT_TRUE(sink().GetFirstResourceCallMatching( | 86 ASSERT_TRUE(sink().GetFirstResourceCallMatching( |
| 88 PpapiHostMsg_FileChooser_Show::ID, ¶ms, &msg)); | 87 PpapiHostMsg_FileChooser_Show::ID, ¶ms, &msg)); |
| 89 | 88 |
| 90 ResourceMessageReplyParams reply_params(params.pp_resource(), | 89 ResourceMessageReplyParams reply_params(params.pp_resource(), |
| 91 params.sequence()); | 90 params.sequence()); |
| 92 reply_params.set_result(PP_OK); | 91 reply_params.set_result(PP_OK); |
| 93 | 92 |
| 94 // Synthesize a response with one file ref in it. Note that it must have a | 93 // Synthesize a response with one file ref in it. Note that it must have a |
| 95 // pending_host_resource_id set. Since there isn't actually a host, this can | 94 // host resource value set or deserialization will fail. Since there isn't |
| 96 // be whatever we want. | 95 // actually a host, this can be whatever we want. |
| 97 std::vector<FileRefCreateInfo> create_info_array; | 96 std::vector<PPB_FileRef_CreateInfo> create_info_array; |
| 98 FileRefCreateInfo create_info; | 97 PPB_FileRef_CreateInfo create_info; |
| 99 create_info.file_system_type = PP_FILESYSTEMTYPE_EXTERNAL; | 98 create_info.resource.SetHostResource(pp_instance(), 123); |
| 100 create_info.display_name = "bar"; | 99 create_info.path = "foo/bar"; |
| 101 create_info.pending_host_resource_id = 12; | 100 create_info.name = "baz"; |
| 102 create_info_array.push_back(create_info); | 101 create_info_array.push_back(create_info); |
| 103 ASSERT_TRUE(plugin_dispatcher()->OnMessageReceived( | 102 ASSERT_TRUE(plugin_dispatcher()->OnMessageReceived( |
| 104 PpapiPluginMsg_ResourceReply(reply_params, | 103 PpapiPluginMsg_ResourceReply(reply_params, |
| 105 PpapiPluginMsg_FileChooser_ShowReply(create_info_array)))); | 104 PpapiPluginMsg_FileChooser_ShowReply(create_info_array)))); |
| 106 | 105 |
| 107 // Should have populated our vector. | 106 // Should have populated our vector. |
| 108 ASSERT_EQ(1u, dest.size()); | 107 ASSERT_EQ(1u, dest.size()); |
| 109 LockingResourceReleaser dest_deletor(dest[0]); // Ensure it's cleaned up. | 108 LockingResourceReleaser dest_deletor(dest[0]); // Ensure it's cleaned up. |
| 110 | 109 |
| 111 const PPB_FileRef_1_0* file_ref_iface = thunk::GetPPB_FileRef_1_0_Thunk(); | 110 const PPB_FileRef_1_0* file_ref_iface = thunk::GetPPB_FileRef_1_0_Thunk(); |
| 112 EXPECT_EQ(PP_FILESYSTEMTYPE_EXTERNAL, | 111 EXPECT_EQ(PP_FILESYSTEMTYPE_EXTERNAL, |
| 113 file_ref_iface->GetFileSystemType(dest[0])); | 112 file_ref_iface->GetFileSystemType(dest[0])); |
| 114 | 113 |
| 115 PP_Var name_var(file_ref_iface->GetName(dest[0])); | 114 PP_Var name_var(file_ref_iface->GetName(dest[0])); |
| 116 { | 115 { |
| 117 ProxyAutoLock lock; | 116 ProxyAutoLock lock; |
| 118 ScopedPPVar release_name_var(ScopedPPVar::PassRef(), name_var); | 117 ScopedPPVar release_name_var(ScopedPPVar::PassRef(), name_var); |
| 119 EXPECT_VAR_IS_STRING("bar", name_var); | 118 EXPECT_VAR_IS_STRING(create_info.name, name_var); |
| 120 } | 119 } |
| 120 // Path should be undefined since it's external filesystem. |
| 121 PP_Var path_var(file_ref_iface->GetPath(dest[0])); | 121 PP_Var path_var(file_ref_iface->GetPath(dest[0])); |
| 122 { | 122 { |
| 123 ProxyAutoLock lock; | 123 ProxyAutoLock lock; |
| 124 ScopedPPVar release_path_var(ScopedPPVar::PassRef(), path_var); | 124 ScopedPPVar release_path_var(ScopedPPVar::PassRef(), path_var); |
| 125 EXPECT_EQ(PP_VARTYPE_UNDEFINED, path_var.type); | 125 EXPECT_EQ(PP_VARTYPE_UNDEFINED, path_var.type); |
| 126 } | 126 } |
| 127 } | 127 } |
| 128 | 128 |
| 129 TEST_F(FileChooserResourceTest, PopulateAcceptTypes) { | 129 TEST_F(FileChooserResourceTest, PopulateAcceptTypes) { |
| 130 EXPECT_TRUE(CheckParseAcceptType(std::string(), NULL, NULL)); | 130 EXPECT_TRUE(CheckParseAcceptType(std::string(), NULL, NULL)); |
| 131 EXPECT_TRUE(CheckParseAcceptType("/", NULL, NULL)); | 131 EXPECT_TRUE(CheckParseAcceptType("/", NULL, NULL)); |
| 132 EXPECT_TRUE(CheckParseAcceptType(".", NULL, NULL)); | 132 EXPECT_TRUE(CheckParseAcceptType(".", NULL, NULL)); |
| 133 EXPECT_TRUE(CheckParseAcceptType(",, , ", NULL, NULL)); | 133 EXPECT_TRUE(CheckParseAcceptType(",, , ", NULL, NULL)); |
| 134 | 134 |
| 135 EXPECT_TRUE(CheckParseAcceptType("app/txt", "app/txt", NULL)); | 135 EXPECT_TRUE(CheckParseAcceptType("app/txt", "app/txt", NULL)); |
| 136 EXPECT_TRUE(CheckParseAcceptType("app/txt,app/pdf", "app/txt", "app/pdf")); | 136 EXPECT_TRUE(CheckParseAcceptType("app/txt,app/pdf", "app/txt", "app/pdf")); |
| 137 EXPECT_TRUE(CheckParseAcceptType(" app/txt , app/pdf ", | 137 EXPECT_TRUE(CheckParseAcceptType(" app/txt , app/pdf ", |
| 138 "app/txt", "app/pdf")); | 138 "app/txt", "app/pdf")); |
| 139 | 139 |
| 140 // No dot or slash ones should be skipped. | 140 // No dot or slash ones should be skipped. |
| 141 EXPECT_TRUE(CheckParseAcceptType("foo", NULL, NULL)); | 141 EXPECT_TRUE(CheckParseAcceptType("foo", NULL, NULL)); |
| 142 EXPECT_TRUE(CheckParseAcceptType("foo,.txt", ".txt", NULL)); | 142 EXPECT_TRUE(CheckParseAcceptType("foo,.txt", ".txt", NULL)); |
| 143 } | 143 } |
| 144 | 144 |
| 145 } // namespace proxy | 145 } // namespace proxy |
| 146 } // namespace ppapi | 146 } // namespace ppapi |
| OLD | NEW |