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

Side by Side Diff: Source/core/html/HTMLPlugInElement.cpp

Issue 38453002: Move members of HTMLPlugInImageElement to HTMLPlugInElement, part 4. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 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
« no previous file with comments | « Source/core/html/HTMLPlugInElement.h ('k') | Source/core/html/HTMLPlugInImageElement.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 /** 1 /**
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2000 Stefan Schimanski (1Stein@gmx.de) 4 * (C) 2000 Stefan Schimanski (1Stein@gmx.de)
5 * Copyright (C) 2004, 2005, 2006 Apple Computer, Inc. 5 * Copyright (C) 2004, 2005, 2006 Apple Computer, Inc.
6 * 6 *
7 * This library is free software; you can redistribute it and/or 7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public 8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version. 10 * version 2 of the License, or (at your option) any later version.
(...skipping 19 matching lines...) Expand all
30 #include "core/dom/Document.h" 30 #include "core/dom/Document.h"
31 #include "core/dom/PostAttachCallbacks.h" 31 #include "core/dom/PostAttachCallbacks.h"
32 #include "core/events/Event.h" 32 #include "core/events/Event.h"
33 #include "core/html/HTMLImageLoader.h" 33 #include "core/html/HTMLImageLoader.h"
34 #include "core/loader/FrameLoaderClient.h" 34 #include "core/loader/FrameLoaderClient.h"
35 #include "core/page/EventHandler.h" 35 #include "core/page/EventHandler.h"
36 #include "core/frame/Frame.h" 36 #include "core/frame/Frame.h"
37 #include "core/platform/MIMETypeFromURL.h" 37 #include "core/platform/MIMETypeFromURL.h"
38 #include "core/plugins/PluginView.h" 38 #include "core/plugins/PluginView.h"
39 #include "core/rendering/RenderEmbeddedObject.h" 39 #include "core/rendering/RenderEmbeddedObject.h"
40 #include "core/rendering/RenderImage.h"
40 #include "core/rendering/RenderWidget.h" 41 #include "core/rendering/RenderWidget.h"
41 #include "platform/Widget.h" 42 #include "platform/Widget.h"
42 #include "wtf/UnusedParam.h" 43 #include "wtf/UnusedParam.h"
43 44
44 45
45 namespace WebCore { 46 namespace WebCore {
46 47
47 using namespace HTMLNames; 48 using namespace HTMLNames;
48 49
49 HTMLPlugInElement::HTMLPlugInElement(const QualifiedName& tagName, Document& doc , bool createdByParser, PreferPlugInsForImagesOption preferPlugInsForImagesOptio n) 50 HTMLPlugInElement::HTMLPlugInElement(const QualifiedName& tagName, Document& doc , bool createdByParser, PreferPlugInsForImagesOption preferPlugInsForImagesOptio n)
50 : HTMLFrameOwnerElement(tagName, doc) 51 : HTMLFrameOwnerElement(tagName, doc)
51 , m_NPObject(0) 52 , m_NPObject(0)
52 , m_isCapturingMouseEvents(false) 53 , m_isCapturingMouseEvents(false)
53 , m_inBeforeLoadEventHandler(false) 54 , m_inBeforeLoadEventHandler(false)
54 // m_needsWidgetUpdate(!createdByParser) allows HTMLObjectElement to delay 55 // m_needsWidgetUpdate(!createdByParser) allows HTMLObjectElement to delay
55 // widget updates until after all children are parsed. For HTMLEmbedElement 56 // widget updates until after all children are parsed. For HTMLEmbedElement
56 // this delay is unnecessary, but it is simpler to make both classes share 57 // this delay is unnecessary, but it is simpler to make both classes share
57 // the same codepath in this class. 58 // the same codepath in this class.
58 , m_needsWidgetUpdate(!createdByParser) 59 , m_needsWidgetUpdate(!createdByParser)
59 , m_shouldPreferPlugInsForImages(preferPlugInsForImagesOption == ShouldPrefe rPlugInsForImages) 60 , m_shouldPreferPlugInsForImages(preferPlugInsForImagesOption == ShouldPrefe rPlugInsForImages)
60 , m_displayState(Playing) 61 , m_displayState(Playing)
61 { 62 {
63 setHasCustomStyleCallbacks();
62 } 64 }
63 65
64 HTMLPlugInElement::~HTMLPlugInElement() 66 HTMLPlugInElement::~HTMLPlugInElement()
65 { 67 {
66 ASSERT(!m_pluginWrapper); // cleared in detach() 68 ASSERT(!m_pluginWrapper); // cleared in detach()
67 69
68 if (m_NPObject) { 70 if (m_NPObject) {
69 _NPN_ReleaseObject(m_NPObject); 71 _NPN_ReleaseObject(m_NPObject);
70 m_NPObject = 0; 72 m_NPObject = 0;
71 } 73 }
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 } 160 }
159 161
160 if (m_NPObject) { 162 if (m_NPObject) {
161 _NPN_ReleaseObject(m_NPObject); 163 _NPN_ReleaseObject(m_NPObject);
162 m_NPObject = 0; 164 m_NPObject = 0;
163 } 165 }
164 166
165 HTMLFrameOwnerElement::detach(context); 167 HTMLFrameOwnerElement::detach(context);
166 } 168 }
167 169
170 RenderObject* HTMLPlugInElement::createRenderer(RenderStyle* style)
171 {
172 // Fallback content breaks the DOM->Renderer class relationship of this
173 // class and all superclasses because createObject won't necessarily
174 // return a RenderEmbeddedObject, RenderPart or even RenderWidget.
175 if (useFallbackContent())
176 return RenderObject::createObject(this, style);
177
178 if (isImageType()) {
179 RenderImage* image = new RenderImage(this);
180 image->setImageResource(RenderImageResource::create());
181 return image;
182 }
183
184 return new RenderEmbeddedObject(this);
185 }
186
187 void HTMLPlugInElement::willRecalcStyle(StyleRecalcChange)
188 {
189 // FIXME: Why is this necessary? Manual re-attach is almost always wrong.
190 if (!useFallbackContent() && needsWidgetUpdate() && renderer() && !isImageTy pe())
191 reattach();
192 }
193
194 void HTMLPlugInElement::finishParsingChildren()
195 {
196 HTMLFrameOwnerElement::finishParsingChildren();
197 if (useFallbackContent())
198 return;
199
200 setNeedsWidgetUpdate(true);
201 if (inDocument())
202 setNeedsStyleRecalc();
203 }
204
168 void HTMLPlugInElement::resetInstance() 205 void HTMLPlugInElement::resetInstance()
169 { 206 {
170 m_pluginWrapper.clear(); 207 m_pluginWrapper.clear();
171 } 208 }
172 209
173 SharedPersistent<v8::Object>* HTMLPlugInElement::pluginWrapper() 210 SharedPersistent<v8::Object>* HTMLPlugInElement::pluginWrapper()
174 { 211 {
175 Frame* frame = document().frame(); 212 Frame* frame = document().frame();
176 if (!frame) 213 if (!frame)
177 return 0; 214 return 0;
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 367
331 RenderEmbeddedObject* HTMLPlugInElement::renderEmbeddedObject() const 368 RenderEmbeddedObject* HTMLPlugInElement::renderEmbeddedObject() const
332 { 369 {
333 // HTMLObjectElement and HTMLEmbedElement may return arbitrary renderers 370 // HTMLObjectElement and HTMLEmbedElement may return arbitrary renderers
334 // when using fallback content. 371 // when using fallback content.
335 if (!renderer() || !renderer()->isEmbeddedObject()) 372 if (!renderer() || !renderer()->isEmbeddedObject())
336 return 0; 373 return 0;
337 return toRenderEmbeddedObject(renderer()); 374 return toRenderEmbeddedObject(renderer());
338 } 375 }
339 376
377 // We don't use m_url, as it may not be the final URL that the object loads,
378 // depending on <param> values.
379 bool HTMLPlugInElement::allowedToLoadFrameURL(const String& url)
380 {
381 KURL completeURL = document().completeURL(url);
382 if (contentFrame() && protocolIsJavaScript(completeURL)
383 && !document().securityOrigin()->canAccess(contentDocument()->securityOr igin()))
384 return false;
385 return document().frame()->isURLAllowed(completeURL);
340 } 386 }
387
388 // We don't use m_url, or m_serviceType as they may not be the final values
389 // that <object> uses depending on <param> values.
390 bool HTMLPlugInElement::wouldLoadAsNetscapePlugin(const String& url, const Strin g& serviceType)
391 {
392 ASSERT(document().frame());
393 KURL completedURL;
394 if (!url.isEmpty())
395 completedURL = document().completeURL(url);
396 return document().frame()->loader().client()->objectContentType(completedURL , serviceType, shouldPreferPlugInsForImages()) == ObjectContentNetscapePlugin;
397 }
398
399 }
OLDNEW
« no previous file with comments | « Source/core/html/HTMLPlugInElement.h ('k') | Source/core/html/HTMLPlugInImageElement.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698