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

Side by Side Diff: Source/core/loader/SubframeLoader.cpp

Issue 20858002: Merge SubframeLoader::createJavaAppletWidget into HTMLAppletElement::udpateWidget (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv ed. 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv ed.
3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
4 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 4 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
5 * Copyright (C) 2008 Alp Toker <alp@atoker.com> 5 * Copyright (C) 2008 Alp Toker <alp@atoker.com>
6 * Copyright (C) Research In Motion Limited 2009. All rights reserved. 6 * Copyright (C) Research In Motion Limited 2009. All rights reserved.
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without 8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions 9 * modification, are permitted provided that the following conditions
10 * are met: 10 * are met:
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 bool success = requestPlugin(ownerElement, completedURL, mimeType, param Names, paramValues, useFallback); 173 bool success = requestPlugin(ownerElement, completedURL, mimeType, param Names, paramValues, useFallback);
174 return success; 174 return success;
175 } 175 }
176 176
177 // If the plug-in element already contains a subframe, loadOrRedirectSubfram e will re-use it. Otherwise, 177 // If the plug-in element already contains a subframe, loadOrRedirectSubfram e will re-use it. Otherwise,
178 // it will create a new frame and set it as the RenderPart's widget, causing what was previously 178 // it will create a new frame and set it as the RenderPart's widget, causing what was previously
179 // in the widget to be torn down. 179 // in the widget to be torn down.
180 return loadOrRedirectSubframe(ownerElement, completedURL, frameName, true); 180 return loadOrRedirectSubframe(ownerElement, completedURL, frameName, true);
181 } 181 }
182 182
183 PassRefPtr<Widget> SubframeLoader::createJavaAppletWidget(const IntSize& size, H TMLAppletElement* element, const Vector<String>& paramNames, const Vector<String >& paramValues)
184 {
185 String baseURLString;
186 String codeBaseURLString;
187
188 for (size_t i = 0; i < paramNames.size(); ++i) {
189 if (equalIgnoringCase(paramNames[i], "baseurl"))
190 baseURLString = paramValues[i];
191 else if (equalIgnoringCase(paramNames[i], "codebase"))
192 codeBaseURLString = paramValues[i];
193 }
194
195 if (!codeBaseURLString.isEmpty()) {
196 KURL codeBaseURL = completeURL(codeBaseURLString);
197 if (!element->document()->securityOrigin()->canDisplay(codeBaseURL)) {
198 FrameLoader::reportLocalLoadFailed(m_frame, codeBaseURL.string());
199 return 0;
200 }
201
202 const char javaAppletMimeType[] = "application/x-java-applet";
203 if (!element->document()->contentSecurityPolicy()->allowObjectFromSource (codeBaseURL)
204 || !element->document()->contentSecurityPolicy()->allowPluginType(ja vaAppletMimeType, javaAppletMimeType, codeBaseURL))
205 return 0;
206 }
207
208 if (baseURLString.isEmpty())
209 baseURLString = m_frame->document()->baseURL().string();
210 KURL baseURL = completeURL(baseURLString);
211
212 RefPtr<Widget> widget;
213 if (allowPlugins(AboutToInstantiatePlugin))
214 widget = m_frame->loader()->client()->createJavaAppletWidget(size, eleme nt, baseURL, paramNames, paramValues);
215
216 if (!widget) {
217 RenderEmbeddedObject* renderer = element->renderEmbeddedObject();
218
219 if (!renderer->showsUnavailablePluginIndicator())
220 renderer->setPluginUnavailabilityReason(RenderEmbeddedObject::Plugin Missing);
221 return 0;
222 }
223
224 m_containsPlugins = true;
225 return widget;
226 }
227
228 bool SubframeLoader::loadOrRedirectSubframe(HTMLFrameOwnerElement* ownerElement, const KURL& url, const AtomicString& frameName, bool lockBackForwardList) 183 bool SubframeLoader::loadOrRedirectSubframe(HTMLFrameOwnerElement* ownerElement, const KURL& url, const AtomicString& frameName, bool lockBackForwardList)
229 { 184 {
230 if (Frame* frame = ownerElement->contentFrame()) { 185 if (Frame* frame = ownerElement->contentFrame()) {
231 frame->navigationScheduler()->scheduleLocationChange(m_frame->document() ->securityOrigin(), url.string(), m_frame->loader()->outgoingReferrer(), lockBac kForwardList); 186 frame->navigationScheduler()->scheduleLocationChange(m_frame->document() ->securityOrigin(), url.string(), m_frame->loader()->outgoingReferrer(), lockBac kForwardList);
232 return true; 187 return true;
233 } 188 }
234 189
235 return loadSubframe(ownerElement, url, frameName, m_frame->loader()->outgoin gReferrer()); 190 return loadSubframe(ownerElement, url, frameName, m_frame->loader()->outgoin gReferrer());
236 } 191 }
237 192
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 return true; 306 return true;
352 } 307 }
353 308
354 KURL SubframeLoader::completeURL(const String& url) const 309 KURL SubframeLoader::completeURL(const String& url) const
355 { 310 {
356 ASSERT(m_frame->document()); 311 ASSERT(m_frame->document());
357 return m_frame->document()->completeURL(url); 312 return m_frame->document()->completeURL(url);
358 } 313 }
359 314
360 } // namespace WebCore 315 } // namespace WebCore
OLDNEW
« Source/core/html/HTMLAppletElement.cpp ('K') | « Source/core/loader/SubframeLoader.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698