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

Side by Side Diff: content/browser/renderer_host/render_view_host_impl.cc

Issue 10817006: Add more FS types and introduce type field into IsolatedContext (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 4 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
« no previous file with comments | « content/browser/intents/intent_injector.cc ('k') | webkit/fileapi/file_system_context.cc » ('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 "content/browser/renderer_host/render_view_host_impl.h" 5 #include "content/browser/renderer_host/render_view_host_impl.h"
6 6
7 #include <set> 7 #include <set>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 524 matching lines...) Expand 10 before | Expand all | Expand 10 after
535 iter != filtered_data.filenames.end(); ++iter) { 535 iter != filtered_data.filenames.end(); ++iter) {
536 // A dragged file may wind up as the value of an input element, or it 536 // A dragged file may wind up as the value of an input element, or it
537 // may be used as the target of a navigation instead. We don't know 537 // may be used as the target of a navigation instead. We don't know
538 // which will happen at this point, so generously grant both access 538 // which will happen at this point, so generously grant both access
539 // and request permissions to the specific file to cover both cases. 539 // and request permissions to the specific file to cover both cases.
540 // We do not give it the permission to request all file:// URLs. 540 // We do not give it the permission to request all file:// URLs.
541 FilePath path = FilePath::FromUTF8Unsafe(UTF16ToUTF8(iter->path)); 541 FilePath path = FilePath::FromUTF8Unsafe(UTF16ToUTF8(iter->path));
542 542
543 // Make sure we have the same display_name as the one we register. 543 // Make sure we have the same display_name as the one we register.
544 if (iter->display_name.empty()) { 544 if (iter->display_name.empty()) {
545 std::string name = files.AddPath(path); 545 std::string name;
546 files.AddPath(path, &name);
546 iter->display_name = UTF8ToUTF16(name); 547 iter->display_name = UTF8ToUTF16(name);
547 } else { 548 } else {
548 files.AddPathWithName(path, UTF16ToUTF8(iter->display_name)); 549 files.AddPathWithName(path, UTF16ToUTF8(iter->display_name));
549 } 550 }
550 551
551 policy->GrantRequestSpecificFileURL(renderer_id, 552 policy->GrantRequestSpecificFileURL(renderer_id,
552 net::FilePathToFileURL(path)); 553 net::FilePathToFileURL(path));
553 554
554 // If the renderer already has permission to read these paths, we don't need 555 // If the renderer already has permission to read these paths, we don't need
555 // to re-grant them. This prevents problems with DnD for files in the CrOS 556 // to re-grant them. This prevents problems with DnD for files in the CrOS
556 // file manager--the file manager already had read/write access to those 557 // file manager--the file manager already had read/write access to those
557 // directories, but dragging a file would cause the read/write access to be 558 // directories, but dragging a file would cause the read/write access to be
558 // overwritten with read-only access, making them impossible to delete or 559 // overwritten with read-only access, making them impossible to delete or
559 // rename until the renderer was killed. 560 // rename until the renderer was killed.
560 if (!policy->CanReadFile(renderer_id, path)) { 561 if (!policy->CanReadFile(renderer_id, path)) {
561 policy->GrantReadFile(renderer_id, path); 562 policy->GrantReadFile(renderer_id, path);
562 // Allow dragged directories to be enumerated by the child process. 563 // Allow dragged directories to be enumerated by the child process.
563 // Note that we can't tell a file from a directory at this point. 564 // Note that we can't tell a file from a directory at this point.
564 policy->GrantReadDirectory(renderer_id, path); 565 policy->GrantReadDirectory(renderer_id, path);
565 } 566 }
566 } 567 }
567 568
568 fileapi::IsolatedContext* isolated_context = 569 fileapi::IsolatedContext* isolated_context =
569 fileapi::IsolatedContext::GetInstance(); 570 fileapi::IsolatedContext::GetInstance();
570 DCHECK(isolated_context); 571 DCHECK(isolated_context);
571 std::string filesystem_id = isolated_context->RegisterFileSystem(files); 572 std::string filesystem_id = isolated_context->RegisterDraggedFileSystem(
573 files);
572 if (!filesystem_id.empty()) { 574 if (!filesystem_id.empty()) {
573 // Grant the permission iff the ID is valid. 575 // Grant the permission iff the ID is valid.
574 policy->GrantReadFileSystem(renderer_id, filesystem_id); 576 policy->GrantReadFileSystem(renderer_id, filesystem_id);
575 } 577 }
576 filtered_data.filesystem_id = UTF8ToUTF16(filesystem_id); 578 filtered_data.filesystem_id = UTF8ToUTF16(filesystem_id);
577 579
578 Send(new DragMsg_TargetDragEnter(GetRoutingID(), filtered_data, client_pt, 580 Send(new DragMsg_TargetDragEnter(GetRoutingID(), filtered_data, client_pt,
579 screen_pt, operations_allowed, 581 screen_pt, operations_allowed,
580 key_modifiers)); 582 key_modifiers));
581 } 583 }
(...skipping 1299 matching lines...) Expand 10 before | Expand all | Expand 10 after
1881 // can cause navigations to be ignored in OnMsgNavigate. 1883 // can cause navigations to be ignored in OnMsgNavigate.
1882 is_waiting_for_beforeunload_ack_ = false; 1884 is_waiting_for_beforeunload_ack_ = false;
1883 is_waiting_for_unload_ack_ = false; 1885 is_waiting_for_unload_ack_ = false;
1884 } 1886 }
1885 1887
1886 void RenderViewHostImpl::ClearPowerSaveBlockers() { 1888 void RenderViewHostImpl::ClearPowerSaveBlockers() {
1887 STLDeleteValues(&power_save_blockers_); 1889 STLDeleteValues(&power_save_blockers_);
1888 } 1890 }
1889 1891
1890 } // namespace content 1892 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/intents/intent_injector.cc ('k') | webkit/fileapi/file_system_context.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698