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

Side by Side Diff: Source/bindings/core/v8/BindingSecurity.cpp

Issue 683013002: Extract a DOMWindow interface from LocalDOMWindow and use it in the idl. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase on top of DOMWindow moves and UseCounter overload for Frame Created 6 years, 1 month 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 /* 1 /*
2 * Copyright (C) 2009 Google Inc. All rights reserved. 2 * Copyright (C) 2009 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 exceptionState.throwSecurityError(targetDocument->domWindow()->sanitized CrossDomainAccessErrorMessage(callingWindow), targetDocument->domWindow()->cross DomainAccessErrorMessage(callingWindow)); 65 exceptionState.throwSecurityError(targetDocument->domWindow()->sanitized CrossDomainAccessErrorMessage(callingWindow), targetDocument->domWindow()->cross DomainAccessErrorMessage(callingWindow));
66 return false; 66 return false;
67 } 67 }
68 68
69 static bool canAccessDocument(v8::Isolate* isolate, Document* targetDocument, Se curityReportingOption reportingOption = ReportSecurityError) 69 static bool canAccessDocument(v8::Isolate* isolate, Document* targetDocument, Se curityReportingOption reportingOption = ReportSecurityError)
70 { 70 {
71 LocalDOMWindow* callingWindow = callingDOMWindow(isolate); 71 LocalDOMWindow* callingWindow = callingDOMWindow(isolate);
72 if (isDocumentAccessibleFromDOMWindow(targetDocument, callingWindow)) 72 if (isDocumentAccessibleFromDOMWindow(targetDocument, callingWindow))
73 return true; 73 return true;
74 74
75 // FIXME: This logic looks unnecessarily convoluted.
75 if (reportingOption == ReportSecurityError && targetDocument->domWindow()) { 76 if (reportingOption == ReportSecurityError && targetDocument->domWindow()) {
76 if (LocalFrame* frame = targetDocument->frame()) 77 if (LocalFrame* frame = targetDocument->frame())
77 frame->domWindow()->printErrorMessage(targetDocument->domWindow()->c rossDomainAccessErrorMessage(callingWindow)); 78 frame->localDOMWindow()->printErrorMessage(targetDocument->domWindow ()->crossDomainAccessErrorMessage(callingWindow));
78 } 79 }
79 80
80 return false; 81 return false;
81 } 82 }
82 83
83 bool BindingSecurity::shouldAllowAccessToFrame(v8::Isolate* isolate, Frame* targ et, SecurityReportingOption reportingOption) 84 bool BindingSecurity::shouldAllowAccessToFrame(v8::Isolate* isolate, Frame* targ et, SecurityReportingOption reportingOption)
84 { 85 {
85 if (!target || !target->isLocalFrame()) 86 if (!target || !target->isLocalFrame())
86 return false; 87 return false;
87 return canAccessDocument(isolate, toLocalFrame(target)->document(), reportin gOption); 88 return canAccessDocument(isolate, toLocalFrame(target)->document(), reportin gOption);
88 } 89 }
89 90
90 bool BindingSecurity::shouldAllowAccessToFrame(v8::Isolate* isolate, Frame* targ et, ExceptionState& exceptionState) 91 bool BindingSecurity::shouldAllowAccessToFrame(v8::Isolate* isolate, Frame* targ et, ExceptionState& exceptionState)
91 { 92 {
92 if (!target || !target->isLocalFrame()) 93 if (!target || !target->isLocalFrame())
93 return false; 94 return false;
94 return canAccessDocument(isolate, toLocalFrame(target)->document(), exceptio nState); 95 return canAccessDocument(isolate, toLocalFrame(target)->document(), exceptio nState);
95 } 96 }
96 97
97 bool BindingSecurity::shouldAllowAccessToNode(v8::Isolate* isolate, Node* target , ExceptionState& exceptionState) 98 bool BindingSecurity::shouldAllowAccessToNode(v8::Isolate* isolate, Node* target , ExceptionState& exceptionState)
98 { 99 {
99 return target && canAccessDocument(isolate, &target->document(), exceptionSt ate); 100 return target && canAccessDocument(isolate, &target->document(), exceptionSt ate);
100 } 101 }
101 102
102 } 103 }
OLDNEW
« no previous file with comments | « no previous file | Source/bindings/core/v8/DictionaryHelperForCore.cpp » ('j') | Source/core/events/MouseRelatedEvent.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698