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

Side by Side Diff: chrome/browser/extensions/extension_file_browser_private_api.cc

Issue 9419033: Move creation of BrowserContext objects that live in content to content, instead of depending on th… (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Fix memory leaks in tests Created 8 years, 10 months 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
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 "chrome/browser/extensions/extension_file_browser_private_api.h" 5 #include "chrome/browser/extensions/extension_file_browser_private_api.h"
6 6
7 #include "base/base64.h" 7 #include "base/base64.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/json/json_writer.h" 10 #include "base/json/json_writer.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 #include "webkit/fileapi/file_system_mount_point_provider.h" 47 #include "webkit/fileapi/file_system_mount_point_provider.h"
48 #include "webkit/fileapi/file_system_operation_context.h" 48 #include "webkit/fileapi/file_system_operation_context.h"
49 #include "webkit/fileapi/file_system_types.h" 49 #include "webkit/fileapi/file_system_types.h"
50 #include "webkit/fileapi/file_system_util.h" 50 #include "webkit/fileapi/file_system_util.h"
51 51
52 #ifdef OS_CHROMEOS 52 #ifdef OS_CHROMEOS
53 #include "chrome/browser/chromeos/disks/disk_mount_manager.h" 53 #include "chrome/browser/chromeos/disks/disk_mount_manager.h"
54 #endif 54 #endif
55 55
56 using chromeos::disks::DiskMountManager; 56 using chromeos::disks::DiskMountManager;
57 using content::BrowserContext;
57 using content::BrowserThread; 58 using content::BrowserThread;
58 using content::ChildProcessSecurityPolicy; 59 using content::ChildProcessSecurityPolicy;
59 using content::SiteInstance; 60 using content::SiteInstance;
60 using content::WebContents; 61 using content::WebContents;
61 62
62 namespace { 63 namespace {
63 64
64 // Error messages. 65 // Error messages.
65 const char kFileError[] = "File error %d"; 66 const char kFileError[] = "File error %d";
66 const char kInvalidFileUrl[] = "Invalid file URL"; 67 const char kInvalidFileUrl[] = "Invalid file URL";
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 383
383 // Make sure that only component extension can access the entire 384 // Make sure that only component extension can access the entire
384 // local file system. 385 // local file system.
385 if (extension_->location() != Extension::COMPONENT) { 386 if (extension_->location() != Extension::COMPONENT) {
386 NOTREACHED() << "Private method access by non-component extension " 387 NOTREACHED() << "Private method access by non-component extension "
387 << extension_->id(); 388 << extension_->id();
388 return false; 389 return false;
389 } 390 }
390 391
391 fileapi::ExternalFileSystemMountPointProvider* provider = 392 fileapi::ExternalFileSystemMountPointProvider* provider =
392 profile_->GetFileSystemContext()->external_provider(); 393 BrowserContext::GetFileSystemContext(profile_)->external_provider();
393 if (!provider) 394 if (!provider)
394 return false; 395 return false;
395 396
396 // Grant full access to File API from this component extension. 397 // Grant full access to File API from this component extension.
397 provider->GrantFullAccessToExtension(extension_->id()); 398 provider->GrantFullAccessToExtension(extension_->id());
398 399
399 // Grant R/W file permissions to the renderer hosting component 400 // Grant R/W file permissions to the renderer hosting component
400 // extension for all paths exposed by our local file system provider. 401 // extension for all paths exposed by our local file system provider.
401 std::vector<FilePath> root_dirs = provider->GetRootDirectories(); 402 std::vector<FilePath> root_dirs = provider->GetRootDirectories();
402 for (std::vector<FilePath>::iterator iter = root_dirs.begin(); 403 for (std::vector<FilePath>::iterator iter = root_dirs.begin();
(...skipping 10 matching lines...) Expand all
413 // Renderer process id. 414 // Renderer process id.
414 int child_id_; 415 int child_id_;
415 // Extension source URL. 416 // Extension source URL.
416 scoped_refptr<const Extension> extension_; 417 scoped_refptr<const Extension> extension_;
417 DISALLOW_COPY_AND_ASSIGN(LocalFileSystemCallbackDispatcher); 418 DISALLOW_COPY_AND_ASSIGN(LocalFileSystemCallbackDispatcher);
418 }; 419 };
419 420
420 void RequestLocalFileSystemFunction::RequestOnFileThread( 421 void RequestLocalFileSystemFunction::RequestOnFileThread(
421 const GURL& source_url, int child_id) { 422 const GURL& source_url, int child_id) {
422 GURL origin_url = source_url.GetOrigin(); 423 GURL origin_url = source_url.GetOrigin();
423 profile()->GetFileSystemContext()->OpenFileSystem( 424 BrowserContext::GetFileSystemContext(profile())->OpenFileSystem(
424 origin_url, fileapi::kFileSystemTypeExternal, false, // create 425 origin_url, fileapi::kFileSystemTypeExternal, false, // create
425 LocalFileSystemCallbackDispatcher::CreateCallback( 426 LocalFileSystemCallbackDispatcher::CreateCallback(
426 this, 427 this,
427 profile(), 428 profile(),
428 child_id, 429 child_id,
429 GetExtension())); 430 GetExtension()));
430 } 431 }
431 432
432 bool RequestLocalFileSystemFunction::RunImpl() { 433 bool RequestLocalFileSystemFunction::RunImpl() {
433 if (!dispatcher() || !render_view_host() || !render_view_host()->process()) 434 if (!dispatcher() || !render_view_host() || !render_view_host()->process())
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 const GURL& file_url, FilePath* local_path, FilePath* virtual_path) { 467 const GURL& file_url, FilePath* local_path, FilePath* virtual_path) {
467 GURL file_origin_url; 468 GURL file_origin_url;
468 fileapi::FileSystemType type; 469 fileapi::FileSystemType type;
469 if (!CrackFileSystemURL(file_url, &file_origin_url, &type, 470 if (!CrackFileSystemURL(file_url, &file_origin_url, &type,
470 virtual_path)) { 471 virtual_path)) {
471 return false; 472 return false;
472 } 473 }
473 if (type != fileapi::kFileSystemTypeExternal) 474 if (type != fileapi::kFileSystemTypeExternal)
474 return false; 475 return false;
475 476
476 FilePath root_path = profile_->GetFileSystemContext()->external_provider()-> 477 FilePath root_path = BrowserContext::GetFileSystemContext(profile_)->
477 GetFileSystemRootPathOnFileThread( 478 external_provider()->GetFileSystemRootPathOnFileThread(
478 file_origin_url, 479 file_origin_url,
479 fileapi::kFileSystemTypeExternal, 480 fileapi::kFileSystemTypeExternal,
480 *virtual_path, 481 *virtual_path,
481 false); 482 false);
482 if (root_path == FilePath()) 483 if (root_path == FilePath())
483 return false; 484 return false;
484 485
485 *local_path = root_path.Append(*virtual_path); 486 *local_path = root_path.Append(*virtual_path);
486 return true; 487 return true;
487 } 488 }
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
737 fileapi::FileSystemType type; 738 fileapi::FileSystemType type;
738 if (!CrackFileSystemURL(origin_file_url, &file_origin_url, &type, 739 if (!CrackFileSystemURL(origin_file_url, &file_origin_url, &type,
739 &virtual_path)) { 740 &virtual_path)) {
740 return false; 741 return false;
741 } 742 }
742 743
743 if (type != fileapi::kFileSystemTypeExternal) 744 if (type != fileapi::kFileSystemTypeExternal)
744 return false; 745 return false;
745 746
746 fileapi::ExternalFileSystemMountPointProvider* external_provider = 747 fileapi::ExternalFileSystemMountPointProvider* external_provider =
747 profile_->GetFileSystemContext()->external_provider(); 748 BrowserContext::GetFileSystemContext(profile_)->external_provider();
748 if (!external_provider) 749 if (!external_provider)
749 return false; 750 return false;
750 751
751 if (!external_provider->IsAccessAllowed(file_origin_url, 752 if (!external_provider->IsAccessAllowed(file_origin_url,
752 type, 753 type,
753 virtual_path)) { 754 virtual_path)) {
754 return false; 755 return false;
755 } 756 }
756 757
757 // Make sure this url really being used by the right caller extension. 758 // Make sure this url really being used by the right caller extension.
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
864 file_urls)); 865 file_urls));
865 result_.reset(new base::FundamentalValue(true)); 866 result_.reset(new base::FundamentalValue(true));
866 return true; 867 return true;
867 } 868 }
868 869
869 void ExecuteTasksFileBrowserFunction::RequestFileEntryOnFileThread( 870 void ExecuteTasksFileBrowserFunction::RequestFileEntryOnFileThread(
870 const GURL& source_url, const std::string& task_id, 871 const GURL& source_url, const std::string& task_id,
871 const std::vector<GURL>& file_urls) { 872 const std::vector<GURL>& file_urls) {
872 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 873 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
873 GURL origin_url = source_url.GetOrigin(); 874 GURL origin_url = source_url.GetOrigin();
874 profile()->GetFileSystemContext()->OpenFileSystem( 875 BrowserContext::GetFileSystemContext(profile())->OpenFileSystem(
875 origin_url, fileapi::kFileSystemTypeExternal, false, // create 876 origin_url, fileapi::kFileSystemTypeExternal, false, // create
876 ExecuteTasksFileSystemCallbackDispatcher::CreateCallback( 877 ExecuteTasksFileSystemCallbackDispatcher::CreateCallback(
877 this, 878 this,
878 profile(), 879 profile(),
879 render_view_host()->process()->GetID(), 880 render_view_host()->process()->GetID(),
880 source_url, 881 source_url,
881 GetExtension(), 882 GetExtension(),
882 task_id, 883 task_id,
883 file_urls)); 884 file_urls));
884 } 885 }
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
998 // thread. 999 // thread.
999 void FileBrowserFunction::GetLocalPathsOnFileThread( 1000 void FileBrowserFunction::GetLocalPathsOnFileThread(
1000 const UrlList& file_urls, 1001 const UrlList& file_urls,
1001 GetLocalPathsCallback callback) { 1002 GetLocalPathsCallback callback) {
1002 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 1003 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
1003 FilePathList selected_files; 1004 FilePathList selected_files;
1004 1005
1005 // FilePath(virtual_path) doesn't work on win, so limit this to ChromeOS. 1006 // FilePath(virtual_path) doesn't work on win, so limit this to ChromeOS.
1006 #if defined(OS_CHROMEOS) 1007 #if defined(OS_CHROMEOS)
1007 fileapi::ExternalFileSystemMountPointProvider* provider = 1008 fileapi::ExternalFileSystemMountPointProvider* provider =
1008 profile_->GetFileSystemContext()->external_provider(); 1009 BrowserContext::GetFileSystemContext(profile_)->external_provider();
1009 if (!provider) { 1010 if (!provider) {
1010 LOG(WARNING) << "External provider is not available"; 1011 LOG(WARNING) << "External provider is not available";
1011 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, 1012 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
1012 base::Bind(callback, selected_files)); 1013 base::Bind(callback, selected_files));
1013 return; 1014 return;
1014 } 1015 }
1015 1016
1016 GURL origin_url = source_url().GetOrigin(); 1017 GURL origin_url = source_url().GetOrigin();
1017 size_t len = file_urls.size(); 1018 size_t len = file_urls.size();
1018 selected_files.reserve(len); 1019 selected_files.reserve(len);
(...skipping 679 matching lines...) Expand 10 before | Expand all | Expand 10 after
1698 SET_STRING(IDS_FILE_BROWSER, ENQUEUE); 1699 SET_STRING(IDS_FILE_BROWSER, ENQUEUE);
1699 #undef SET_STRING 1700 #undef SET_STRING
1700 1701
1701 ChromeURLDataManager::DataSource::SetFontAndTextDirection(dict); 1702 ChromeURLDataManager::DataSource::SetFontAndTextDirection(dict);
1702 1703
1703 dict->SetString("PLAY_MEDIA", 1704 dict->SetString("PLAY_MEDIA",
1704 l10n_util::GetStringUTF16(IDS_CONTENT_CONTEXT_PLAY)); 1705 l10n_util::GetStringUTF16(IDS_CONTENT_CONTEXT_PLAY));
1705 1706
1706 return true; 1707 return true;
1707 } 1708 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698