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 |