Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(233)

Side by Side Diff: win8/metro_driver/chrome_app_view_ash.cc

Issue 119733002: Add base:: to string16s in win8/. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « win8/metro_driver/chrome_app_view_ash.h ('k') | win8/metro_driver/chrome_url_launch_handler.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "win8/metro_driver/stdafx.h" 5 #include "win8/metro_driver/stdafx.h"
6 #include "win8/metro_driver/chrome_app_view_ash.h" 6 #include "win8/metro_driver/chrome_app_view_ash.h"
7 7
8 #include <corewindow.h> 8 #include <corewindow.h>
9 #include <shellapi.h> 9 #include <shellapi.h>
10 #include <windows.foundation.h> 10 #include <windows.foundation.h>
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 188
189 private: 189 private:
190 void OnActivateDesktop(const base::FilePath& shortcut, bool ash_exit) { 190 void OnActivateDesktop(const base::FilePath& shortcut, bool ash_exit) {
191 ui_proxy_->PostTask(FROM_HERE, 191 ui_proxy_->PostTask(FROM_HERE,
192 base::Bind(&ChromeAppViewAsh::OnActivateDesktop, 192 base::Bind(&ChromeAppViewAsh::OnActivateDesktop,
193 base::Unretained(app_view_), 193 base::Unretained(app_view_),
194 shortcut, ash_exit)); 194 shortcut, ash_exit));
195 } 195 }
196 196
197 void OnOpenURLOnDesktop(const base::FilePath& shortcut, 197 void OnOpenURLOnDesktop(const base::FilePath& shortcut,
198 const string16& url) { 198 const base::string16& url) {
199 ui_proxy_->PostTask(FROM_HERE, 199 ui_proxy_->PostTask(FROM_HERE,
200 base::Bind(&ChromeAppViewAsh::OnOpenURLOnDesktop, 200 base::Bind(&ChromeAppViewAsh::OnOpenURLOnDesktop,
201 base::Unretained(app_view_), 201 base::Unretained(app_view_),
202 shortcut, url)); 202 shortcut, url));
203 } 203 }
204 204
205 void OnSetCursor(int64 cursor) { 205 void OnSetCursor(int64 cursor) {
206 ui_proxy_->PostTask(FROM_HERE, 206 ui_proxy_->PostTask(FROM_HERE,
207 base::Bind(&ChromeAppViewAsh::OnSetCursor, 207 base::Bind(&ChromeAppViewAsh::OnSetCursor,
208 base::Unretained(app_view_), 208 base::Unretained(app_view_),
209 reinterpret_cast<HCURSOR>(cursor))); 209 reinterpret_cast<HCURSOR>(cursor)));
210 } 210 }
211 211
212 void OnDisplayFileOpenDialog(const string16& title, 212 void OnDisplayFileOpenDialog(const base::string16& title,
213 const string16& filter, 213 const base::string16& filter,
214 const base::FilePath& default_path, 214 const base::FilePath& default_path,
215 bool allow_multiple_files) { 215 bool allow_multiple_files) {
216 ui_proxy_->PostTask(FROM_HERE, 216 ui_proxy_->PostTask(FROM_HERE,
217 base::Bind(&ChromeAppViewAsh::OnDisplayFileOpenDialog, 217 base::Bind(&ChromeAppViewAsh::OnDisplayFileOpenDialog,
218 base::Unretained(app_view_), 218 base::Unretained(app_view_),
219 title, 219 title,
220 filter, 220 filter,
221 default_path, 221 default_path,
222 allow_multiple_files)); 222 allow_multiple_files));
223 } 223 }
224 224
225 void OnDisplayFileSaveAsDialog( 225 void OnDisplayFileSaveAsDialog(
226 const MetroViewerHostMsg_SaveAsDialogParams& params) { 226 const MetroViewerHostMsg_SaveAsDialogParams& params) {
227 ui_proxy_->PostTask( 227 ui_proxy_->PostTask(
228 FROM_HERE, 228 FROM_HERE,
229 base::Bind(&ChromeAppViewAsh::OnDisplayFileSaveAsDialog, 229 base::Bind(&ChromeAppViewAsh::OnDisplayFileSaveAsDialog,
230 base::Unretained(app_view_), 230 base::Unretained(app_view_),
231 params)); 231 params));
232 } 232 }
233 233
234 void OnDisplayFolderPicker(const string16& title) { 234 void OnDisplayFolderPicker(const base::string16& title) {
235 ui_proxy_->PostTask( 235 ui_proxy_->PostTask(
236 FROM_HERE, 236 FROM_HERE,
237 base::Bind(&ChromeAppViewAsh::OnDisplayFolderPicker, 237 base::Bind(&ChromeAppViewAsh::OnDisplayFolderPicker,
238 base::Unretained(app_view_), 238 base::Unretained(app_view_),
239 title)); 239 title));
240 } 240 }
241 241
242 void OnSetCursorPos(int x, int y) { 242 void OnSetCursorPos(int x, int y) {
243 VLOG(1) << "In IPC OnSetCursorPos: " << x << ", " << y; 243 VLOG(1) << "In IPC OnSetCursorPos: " << x << ", " << y;
244 ui_proxy_->PostTask( 244 ui_proxy_->PostTask(
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 DVLOG(1) << __FUNCTION__ << ", activation_kind=" << activation_kind; 320 DVLOG(1) << __FUNCTION__ << ", activation_kind=" << activation_kind;
321 321
322 if (activation_kind == winapp::Activation::ActivationKind_Launch) { 322 if (activation_kind == winapp::Activation::ActivationKind_Launch) {
323 mswr::ComPtr<winapp::Activation::ILaunchActivatedEventArgs> launch_args; 323 mswr::ComPtr<winapp::Activation::ILaunchActivatedEventArgs> launch_args;
324 if (args->QueryInterface( 324 if (args->QueryInterface(
325 winapp::Activation::IID_ILaunchActivatedEventArgs, 325 winapp::Activation::IID_ILaunchActivatedEventArgs,
326 &launch_args) == S_OK) { 326 &launch_args) == S_OK) {
327 DVLOG(1) << "Activate: ActivationKind_Launch"; 327 DVLOG(1) << "Activate: ActivationKind_Launch";
328 mswrw::HString launch_args_str; 328 mswrw::HString launch_args_str;
329 launch_args->get_Arguments(launch_args_str.GetAddressOf()); 329 launch_args->get_Arguments(launch_args_str.GetAddressOf());
330 string16 actual_launch_args(MakeStdWString(launch_args_str.Get())); 330 base::string16 actual_launch_args(
331 MakeStdWString(launch_args_str.Get()));
331 if (actual_launch_args == win8::kMetroViewerConnectVerb) { 332 if (actual_launch_args == win8::kMetroViewerConnectVerb) {
332 DVLOG(1) << __FUNCTION__ << "Not launching chrome server"; 333 DVLOG(1) << __FUNCTION__ << "Not launching chrome server";
333 return true; 334 return true;
334 } 335 }
335 } 336 }
336 } 337 }
337 } 338 }
338 339
339 DVLOG(1) << "Launching chrome server"; 340 DVLOG(1) << "Launching chrome server";
340 base::FilePath chrome_exe_path; 341 base::FilePath chrome_exe_path;
341 342
342 if (!PathService::Get(base::FILE_EXE, &chrome_exe_path)) 343 if (!PathService::Get(base::FILE_EXE, &chrome_exe_path))
343 return false; 344 return false;
344 345
345 string16 parameters = L"--silent-launch --viewer-connect "; 346 base::string16 parameters = L"--silent-launch --viewer-connect ";
346 if (additional_parameters) 347 if (additional_parameters)
347 parameters += additional_parameters; 348 parameters += additional_parameters;
348 349
349 SHELLEXECUTEINFO sei = { sizeof(sei) }; 350 SHELLEXECUTEINFO sei = { sizeof(sei) };
350 sei.nShow = SW_SHOWNORMAL; 351 sei.nShow = SW_SHOWNORMAL;
351 sei.lpFile = chrome_exe_path.value().c_str(); 352 sei.lpFile = chrome_exe_path.value().c_str();
352 sei.lpDirectory = L""; 353 sei.lpDirectory = L"";
353 sei.lpParameters = parameters.c_str(); 354 sei.lpParameters = parameters.c_str();
354 ::ShellExecuteEx(&sei); 355 ::ShellExecuteEx(&sei);
355 return true; 356 return true;
(...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after
751 if (!ash_exit) { 752 if (!ash_exit) {
752 ::TerminateProcess(sei.hProcess, 0); 753 ::TerminateProcess(sei.hProcess, 0);
753 ::CloseHandle(sei.hProcess); 754 ::CloseHandle(sei.hProcess);
754 } 755 }
755 756
756 if (ash_exit) 757 if (ash_exit)
757 ui_channel_->Close(); 758 ui_channel_->Close();
758 } 759 }
759 760
760 void ChromeAppViewAsh::OnOpenURLOnDesktop(const base::FilePath& shortcut, 761 void ChromeAppViewAsh::OnOpenURLOnDesktop(const base::FilePath& shortcut,
761 const string16& url) { 762 const base::string16& url) {
762 base::FilePath::StringType file = shortcut.value(); 763 base::FilePath::StringType file = shortcut.value();
763 SHELLEXECUTEINFO sei = { sizeof(sei) }; 764 SHELLEXECUTEINFO sei = { sizeof(sei) };
764 sei.fMask = SEE_MASK_FLAG_LOG_USAGE; 765 sei.fMask = SEE_MASK_FLAG_LOG_USAGE;
765 sei.nShow = SW_SHOWNORMAL; 766 sei.nShow = SW_SHOWNORMAL;
766 sei.lpFile = file.c_str(); 767 sei.lpFile = file.c_str();
767 sei.lpDirectory = L""; 768 sei.lpDirectory = L"";
768 sei.lpParameters = url.c_str(); 769 sei.lpParameters = url.c_str();
769 BOOL result = ShellExecuteEx(&sei); 770 BOOL result = ShellExecuteEx(&sei);
770 } 771 }
771 772
772 void ChromeAppViewAsh::OnSetCursor(HCURSOR cursor) { 773 void ChromeAppViewAsh::OnSetCursor(HCURSOR cursor) {
773 ::SetCursor(HCURSOR(cursor)); 774 ::SetCursor(HCURSOR(cursor));
774 } 775 }
775 776
776 void ChromeAppViewAsh::OnDisplayFileOpenDialog( 777 void ChromeAppViewAsh::OnDisplayFileOpenDialog(
777 const string16& title, 778 const base::string16& title,
778 const string16& filter, 779 const base::string16& filter,
779 const base::FilePath& default_path, 780 const base::FilePath& default_path,
780 bool allow_multiple_files) { 781 bool allow_multiple_files) {
781 DVLOG(1) << __FUNCTION__; 782 DVLOG(1) << __FUNCTION__;
782 783
783 // The OpenFilePickerSession instance is deleted when we receive a 784 // The OpenFilePickerSession instance is deleted when we receive a
784 // callback from the OpenFilePickerSession class about the completion of the 785 // callback from the OpenFilePickerSession class about the completion of the
785 // operation. 786 // operation.
786 FilePickerSessionBase* file_picker_ = 787 FilePickerSessionBase* file_picker_ =
787 new OpenFilePickerSession(this, 788 new OpenFilePickerSession(this,
788 title, 789 title,
789 filter, 790 filter,
790 default_path, 791 default_path,
791 allow_multiple_files); 792 allow_multiple_files);
792 file_picker_->Run(); 793 file_picker_->Run();
793 } 794 }
794 795
795 void ChromeAppViewAsh::OnDisplayFileSaveAsDialog( 796 void ChromeAppViewAsh::OnDisplayFileSaveAsDialog(
796 const MetroViewerHostMsg_SaveAsDialogParams& params) { 797 const MetroViewerHostMsg_SaveAsDialogParams& params) {
797 DVLOG(1) << __FUNCTION__; 798 DVLOG(1) << __FUNCTION__;
798 799
799 // The SaveFilePickerSession instance is deleted when we receive a 800 // The SaveFilePickerSession instance is deleted when we receive a
800 // callback from the SaveFilePickerSession class about the completion of the 801 // callback from the SaveFilePickerSession class about the completion of the
801 // operation. 802 // operation.
802 FilePickerSessionBase* file_picker_ = 803 FilePickerSessionBase* file_picker_ =
803 new SaveFilePickerSession(this, params); 804 new SaveFilePickerSession(this, params);
804 file_picker_->Run(); 805 file_picker_->Run();
805 } 806 }
806 807
807 void ChromeAppViewAsh::OnDisplayFolderPicker(const string16& title) { 808 void ChromeAppViewAsh::OnDisplayFolderPicker(const base::string16& title) {
808 DVLOG(1) << __FUNCTION__; 809 DVLOG(1) << __FUNCTION__;
809 // The FolderPickerSession instance is deleted when we receive a 810 // The FolderPickerSession instance is deleted when we receive a
810 // callback from the FolderPickerSession class about the completion of the 811 // callback from the FolderPickerSession class about the completion of the
811 // operation. 812 // operation.
812 FilePickerSessionBase* file_picker_ = new FolderPickerSession(this, title); 813 FilePickerSessionBase* file_picker_ = new FolderPickerSession(this, title);
813 file_picker_->Run(); 814 file_picker_->Run();
814 } 815 }
815 816
816 void ChromeAppViewAsh::OnSetCursorPos(int x, int y) { 817 void ChromeAppViewAsh::OnSetCursorPos(int x, int y) {
817 if (ui_channel_) { 818 if (ui_channel_) {
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
912 bool is_ime = false; 913 bool is_ime = false;
913 if (!input_source_->GetActiveSource(&langid, &is_ime)) { 914 if (!input_source_->GetActiveSource(&langid, &is_ime)) {
914 LOG(ERROR) << "GetActiveSource failed"; 915 LOG(ERROR) << "GetActiveSource failed";
915 return; 916 return;
916 } 917 }
917 ui_channel_->Send(new MetroViewerHostMsg_ImeInputSourceChanged(langid, 918 ui_channel_->Send(new MetroViewerHostMsg_ImeInputSourceChanged(langid,
918 is_ime)); 919 is_ime));
919 } 920 }
920 921
921 void ChromeAppViewAsh::OnCompositionChanged( 922 void ChromeAppViewAsh::OnCompositionChanged(
922 const string16& text, 923 const base::string16& text,
923 int32 selection_start, 924 int32 selection_start,
924 int32 selection_end, 925 int32 selection_end,
925 const std::vector<metro_viewer::UnderlineInfo>& underlines) { 926 const std::vector<metro_viewer::UnderlineInfo>& underlines) {
926 ui_channel_->Send(new MetroViewerHostMsg_ImeCompositionChanged( 927 ui_channel_->Send(new MetroViewerHostMsg_ImeCompositionChanged(
927 text, selection_start, selection_end, underlines)); 928 text, selection_start, selection_end, underlines));
928 } 929 }
929 930
930 void ChromeAppViewAsh::OnTextCommitted(const string16& text) { 931 void ChromeAppViewAsh::OnTextCommitted(const base::string16& text) {
931 ui_channel_->Send(new MetroViewerHostMsg_ImeTextCommitted(text)); 932 ui_channel_->Send(new MetroViewerHostMsg_ImeTextCommitted(text));
932 } 933 }
933 934
934 void ChromeAppViewAsh::SendMouseButton(int x, 935 void ChromeAppViewAsh::SendMouseButton(int x,
935 int y, 936 int y,
936 int extra, 937 int extra,
937 ui::EventType event_type, 938 ui::EventType event_type,
938 uint32 flags, 939 uint32 flags,
939 ui::EventFlags changed_button) { 940 ui::EventFlags changed_button) {
940 MetroViewerHostMsg_MouseButtonParams params; 941 MetroViewerHostMsg_MouseButtonParams params;
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
1223 CheckHR(args->QueryInterface( 1224 CheckHR(args->QueryInterface(
1224 winapp::Activation::IID_ISearchActivatedEventArgs, &search_args)); 1225 winapp::Activation::IID_ISearchActivatedEventArgs, &search_args));
1225 1226
1226 if (!ui_channel_) { 1227 if (!ui_channel_) {
1227 DVLOG(1) << "Launched to handle search request"; 1228 DVLOG(1) << "Launched to handle search request";
1228 LaunchChromeBrowserProcess(L"--windows8-search", args); 1229 LaunchChromeBrowserProcess(L"--windows8-search", args);
1229 } 1230 }
1230 1231
1231 mswrw::HString search_string; 1232 mswrw::HString search_string;
1232 CheckHR(search_args->get_QueryText(search_string.GetAddressOf())); 1233 CheckHR(search_args->get_QueryText(search_string.GetAddressOf()));
1233 string16 search_text(MakeStdWString(search_string.Get())); 1234 base::string16 search_text(MakeStdWString(search_string.Get()));
1234 1235
1235 ui_loop_.PostTask(FROM_HERE, 1236 ui_loop_.PostTask(FROM_HERE,
1236 base::Bind(&ChromeAppViewAsh::OnSearchRequest, 1237 base::Bind(&ChromeAppViewAsh::OnSearchRequest,
1237 base::Unretained(this), 1238 base::Unretained(this),
1238 search_text)); 1239 search_text));
1239 return S_OK; 1240 return S_OK;
1240 } 1241 }
1241 1242
1242 HRESULT ChromeAppViewAsh::HandleProtocolRequest( 1243 HRESULT ChromeAppViewAsh::HandleProtocolRequest(
1243 winapp::Activation::IActivatedEventArgs* args) { 1244 winapp::Activation::IActivatedEventArgs* args) {
1244 DVLOG(1) << __FUNCTION__; 1245 DVLOG(1) << __FUNCTION__;
1245 if (!ui_channel_) 1246 if (!ui_channel_)
1246 DVLOG(1) << "Launched to handle url request"; 1247 DVLOG(1) << "Launched to handle url request";
1247 1248
1248 mswr::ComPtr<winapp::Activation::IProtocolActivatedEventArgs> 1249 mswr::ComPtr<winapp::Activation::IProtocolActivatedEventArgs>
1249 protocol_args; 1250 protocol_args;
1250 CheckHR(args->QueryInterface( 1251 CheckHR(args->QueryInterface(
1251 winapp::Activation::IID_IProtocolActivatedEventArgs, 1252 winapp::Activation::IID_IProtocolActivatedEventArgs,
1252 &protocol_args)); 1253 &protocol_args));
1253 1254
1254 mswr::ComPtr<winfoundtn::IUriRuntimeClass> uri; 1255 mswr::ComPtr<winfoundtn::IUriRuntimeClass> uri;
1255 protocol_args->get_Uri(&uri); 1256 protocol_args->get_Uri(&uri);
1256 mswrw::HString url; 1257 mswrw::HString url;
1257 uri->get_AbsoluteUri(url.GetAddressOf()); 1258 uri->get_AbsoluteUri(url.GetAddressOf());
1258 string16 actual_url(MakeStdWString(url.Get())); 1259 base::string16 actual_url(MakeStdWString(url.Get()));
1259 DVLOG(1) << "Received url request: " << actual_url; 1260 DVLOG(1) << "Received url request: " << actual_url;
1260 1261
1261 ui_loop_.PostTask(FROM_HERE, 1262 ui_loop_.PostTask(FROM_HERE,
1262 base::Bind(&ChromeAppViewAsh::OnNavigateToUrl, 1263 base::Bind(&ChromeAppViewAsh::OnNavigateToUrl,
1263 base::Unretained(this), 1264 base::Unretained(this),
1264 actual_url)); 1265 actual_url));
1265 return S_OK; 1266 return S_OK;
1266 } 1267 }
1267 1268
1268 HRESULT ChromeAppViewAsh::OnEdgeGestureCompleted( 1269 HRESULT ChromeAppViewAsh::OnEdgeGestureCompleted(
1269 winui::Input::IEdgeGesture* gesture, 1270 winui::Input::IEdgeGesture* gesture,
1270 winui::Input::IEdgeGestureEventArgs* args) { 1271 winui::Input::IEdgeGestureEventArgs* args) {
1271 // Swipe from edge gesture (and win+z) is equivalent to pressing F11. 1272 // Swipe from edge gesture (and win+z) is equivalent to pressing F11.
1272 // TODO(cpu): Make this cleaner for m33. 1273 // TODO(cpu): Make this cleaner for m33.
1273 ui_channel_->Send(new MetroViewerHostMsg_KeyDown(VK_F11, 1, 0, 0)); 1274 ui_channel_->Send(new MetroViewerHostMsg_KeyDown(VK_F11, 1, 0, 0));
1274 ::Sleep(15); 1275 ::Sleep(15);
1275 ui_channel_->Send(new MetroViewerHostMsg_KeyUp(VK_F11, 1, 0, 0)); 1276 ui_channel_->Send(new MetroViewerHostMsg_KeyUp(VK_F11, 1, 0, 0));
1276 return S_OK; 1277 return S_OK;
1277 } 1278 }
1278 1279
1279 void ChromeAppViewAsh::OnSearchRequest(const string16& search_string) { 1280 void ChromeAppViewAsh::OnSearchRequest(const base::string16& search_string) {
1280 DCHECK(ui_channel_); 1281 DCHECK(ui_channel_);
1281 ui_channel_->Send(new MetroViewerHostMsg_SearchRequest(search_string)); 1282 ui_channel_->Send(new MetroViewerHostMsg_SearchRequest(search_string));
1282 } 1283 }
1283 1284
1284 void ChromeAppViewAsh::OnNavigateToUrl(const string16& url) { 1285 void ChromeAppViewAsh::OnNavigateToUrl(const base::string16& url) {
1285 DCHECK(ui_channel_); 1286 DCHECK(ui_channel_);
1286 ui_channel_->Send(new MetroViewerHostMsg_OpenURL(url)); 1287 ui_channel_->Send(new MetroViewerHostMsg_OpenURL(url));
1287 } 1288 }
1288 1289
1289 HRESULT ChromeAppViewAsh::OnSizeChanged(winui::Core::ICoreWindow* sender, 1290 HRESULT ChromeAppViewAsh::OnSizeChanged(winui::Core::ICoreWindow* sender,
1290 winui::Core::IWindowSizeChangedEventArgs* args) { 1291 winui::Core::IWindowSizeChangedEventArgs* args) {
1291 if (!window_) { 1292 if (!window_) {
1292 return S_OK; 1293 return S_OK;
1293 } 1294 }
1294 1295
(...skipping 20 matching lines...) Expand all
1315 mswr::ComPtr<winapp::Core::ICoreApplicationExit> app_exit; 1316 mswr::ComPtr<winapp::Core::ICoreApplicationExit> app_exit;
1316 CheckHR(core_app.As(&app_exit)); 1317 CheckHR(core_app.As(&app_exit));
1317 globals.app_exit = app_exit.Detach(); 1318 globals.app_exit = app_exit.Detach();
1318 } 1319 }
1319 1320
1320 IFACEMETHODIMP 1321 IFACEMETHODIMP
1321 ChromeAppViewFactory::CreateView(winapp::Core::IFrameworkView** view) { 1322 ChromeAppViewFactory::CreateView(winapp::Core::IFrameworkView** view) {
1322 *view = mswr::Make<ChromeAppViewAsh>().Detach(); 1323 *view = mswr::Make<ChromeAppViewAsh>().Detach();
1323 return (*view) ? S_OK : E_OUTOFMEMORY; 1324 return (*view) ? S_OK : E_OUTOFMEMORY;
1324 } 1325 }
OLDNEW
« no previous file with comments | « win8/metro_driver/chrome_app_view_ash.h ('k') | win8/metro_driver/chrome_url_launch_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698