OLD | NEW |
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 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
346 m_NPObject = document().frame()->script().createScriptObjectForPluginEle
ment(this); | 346 m_NPObject = document().frame()->script().createScriptObjectForPluginEle
ment(this); |
347 return m_NPObject; | 347 return m_NPObject; |
348 } | 348 } |
349 | 349 |
350 bool HTMLPlugInElement::isImageType() | 350 bool HTMLPlugInElement::isImageType() |
351 { | 351 { |
352 if (m_serviceType.isEmpty() && protocolIs(m_url, "data")) | 352 if (m_serviceType.isEmpty() && protocolIs(m_url, "data")) |
353 m_serviceType = mimeTypeFromDataURL(m_url); | 353 m_serviceType = mimeTypeFromDataURL(m_url); |
354 | 354 |
355 if (Frame* frame = document().frame()) { | 355 if (Frame* frame = document().frame()) { |
356 KURL completedURL = document().completeURL(m_url); | 356 KURL completedURL = treeScope().completeURL(m_url); |
357 return frame->loader().client()->objectContentType(completedURL, m_servi
ceType, shouldPreferPlugInsForImages()) == ObjectContentImage; | 357 return frame->loader().client()->objectContentType(completedURL, m_servi
ceType, shouldPreferPlugInsForImages()) == ObjectContentImage; |
358 } | 358 } |
359 | 359 |
360 return Image::supportsType(m_serviceType); | 360 return Image::supportsType(m_serviceType); |
361 } | 361 } |
362 | 362 |
363 const String HTMLPlugInElement::loadedMimeType() const | 363 const String HTMLPlugInElement::loadedMimeType() const |
364 { | 364 { |
365 String mimeType = m_serviceType; | 365 String mimeType = m_serviceType; |
366 if (mimeType.isEmpty()) | 366 if (mimeType.isEmpty()) |
367 mimeType = mimeTypeFromURL(m_loadedUrl); | 367 mimeType = mimeTypeFromURL(m_loadedUrl); |
368 return mimeType; | 368 return mimeType; |
369 } | 369 } |
370 | 370 |
371 RenderEmbeddedObject* HTMLPlugInElement::renderEmbeddedObject() const | 371 RenderEmbeddedObject* HTMLPlugInElement::renderEmbeddedObject() const |
372 { | 372 { |
373 // HTMLObjectElement and HTMLEmbedElement may return arbitrary renderers | 373 // HTMLObjectElement and HTMLEmbedElement may return arbitrary renderers |
374 // when using fallback content. | 374 // when using fallback content. |
375 if (!renderer() || !renderer()->isEmbeddedObject()) | 375 if (!renderer() || !renderer()->isEmbeddedObject()) |
376 return 0; | 376 return 0; |
377 return toRenderEmbeddedObject(renderer()); | 377 return toRenderEmbeddedObject(renderer()); |
378 } | 378 } |
379 | 379 |
380 // We don't use m_url, as it may not be the final URL that the object loads, | 380 // We don't use m_url, as it may not be the final URL that the object loads, |
381 // depending on <param> values. | 381 // depending on <param> values. |
382 bool HTMLPlugInElement::allowedToLoadFrameURL(const String& url) | 382 bool HTMLPlugInElement::allowedToLoadFrameURL(const String& url) |
383 { | 383 { |
384 KURL completeURL = document().completeURL(url); | 384 KURL completeURL = treeScope().completeURL(url); |
385 if (contentFrame() && protocolIsJavaScript(completeURL) | 385 if (contentFrame() && protocolIsJavaScript(completeURL) |
386 && !document().securityOrigin()->canAccess(contentDocument()->securityOr
igin())) | 386 && !document().securityOrigin()->canAccess(contentDocument()->securityOr
igin())) |
387 return false; | 387 return false; |
388 return document().frame()->isURLAllowed(completeURL); | 388 return document().frame()->isURLAllowed(completeURL); |
389 } | 389 } |
390 | 390 |
391 // We don't use m_url, or m_serviceType as they may not be the final values | 391 // We don't use m_url, or m_serviceType as they may not be the final values |
392 // that <object> uses depending on <param> values. | 392 // that <object> uses depending on <param> values. |
393 bool HTMLPlugInElement::wouldLoadAsNetscapePlugin(const String& url, const Strin
g& serviceType) | 393 bool HTMLPlugInElement::wouldLoadAsNetscapePlugin(const String& url, const Strin
g& serviceType) |
394 { | 394 { |
395 ASSERT(document().frame()); | 395 ASSERT(document().frame()); |
396 KURL completedURL; | 396 KURL completedURL; |
397 if (!url.isEmpty()) | 397 if (!url.isEmpty()) |
398 completedURL = document().completeURL(url); | 398 completedURL = treeScope().completeURL(url); |
399 return document().frame()->loader().client()->objectContentType(completedURL
, serviceType, shouldPreferPlugInsForImages()) == ObjectContentNetscapePlugin; | 399 return document().frame()->loader().client()->objectContentType(completedURL
, serviceType, shouldPreferPlugInsForImages()) == ObjectContentNetscapePlugin; |
400 } | 400 } |
401 | 401 |
402 bool HTMLPlugInElement::requestObject(const String& url, const String& mimeType,
const Vector<String>& paramNames, const Vector<String>& paramValues) | 402 bool HTMLPlugInElement::requestObject(const String& url, const String& mimeType,
const Vector<String>& paramNames, const Vector<String>& paramValues) |
403 { | 403 { |
404 if (url.isEmpty() && mimeType.isEmpty()) | 404 if (url.isEmpty() && mimeType.isEmpty()) |
405 return false; | 405 return false; |
406 | 406 |
407 // FIXME: None of this code should use renderers! | 407 // FIXME: None of this code should use renderers! |
408 RenderEmbeddedObject* renderer = renderEmbeddedObject(); | 408 RenderEmbeddedObject* renderer = renderEmbeddedObject(); |
409 ASSERT(renderer); | 409 ASSERT(renderer); |
410 if (!renderer) | 410 if (!renderer) |
411 return false; | 411 return false; |
412 | 412 |
413 KURL completedURL = document().completeURL(url); | 413 KURL completedURL = treeScope().completeURL(url); |
414 if (!pluginIsLoadable(completedURL, mimeType)) | 414 if (!pluginIsLoadable(completedURL, mimeType)) |
415 return false; | 415 return false; |
416 | 416 |
417 bool useFallback; | 417 bool useFallback; |
418 if (shouldUsePlugin(completedURL, mimeType, renderer->hasFallbackContent(),
useFallback)) | 418 if (shouldUsePlugin(completedURL, mimeType, renderer->hasFallbackContent(),
useFallback)) |
419 return loadPlugin(completedURL, mimeType, paramNames, paramValues, useFa
llback); | 419 return loadPlugin(completedURL, mimeType, paramNames, paramValues, useFa
llback); |
420 | 420 |
421 // If the plug-in element already contains a subframe, | 421 // If the plug-in element already contains a subframe, |
422 // loadOrRedirectSubframe will re-use it. Otherwise, it will create a new | 422 // loadOrRedirectSubframe will re-use it. Otherwise, it will create a new |
423 // frame and set it as the RenderPart's widget, causing what was previously | 423 // frame and set it as the RenderPart's widget, causing what was previously |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
525 if (root.isOldestAuthorShadowRoot()) | 525 if (root.isOldestAuthorShadowRoot()) |
526 lazyReattachIfAttached(); | 526 lazyReattachIfAttached(); |
527 } | 527 } |
528 | 528 |
529 bool HTMLPlugInElement::useFallbackContent() const | 529 bool HTMLPlugInElement::useFallbackContent() const |
530 { | 530 { |
531 return hasAuthorShadowRoot(); | 531 return hasAuthorShadowRoot(); |
532 } | 532 } |
533 | 533 |
534 } | 534 } |
OLD | NEW |