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

Side by Side Diff: third_party/WebKit/Source/core/svg/graphics/SVGImage.cpp

Issue 1850413002: Improve DEFINE_STATIC_LOCAL()'s handling of Blink GCed objects. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address compilation failure Created 4 years, 8 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006 Eric Seidel <eric@webkit.org> 2 * Copyright (C) 2006 Eric Seidel <eric@webkit.org>
3 * Copyright (C) 2008, 2009 Apple Inc. All rights reserved. 3 * Copyright (C) 2008, 2009 Apple Inc. All rights reserved.
4 * Copyright (C) Research In Motion Limited 2011. All rights reserved. 4 * Copyright (C) Research In Motion Limited 2011. All rights reserved.
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 if (!data()->size()) 462 if (!data()->size())
463 return true; 463 return true;
464 464
465 if (allDataReceived) { 465 if (allDataReceived) {
466 // SVGImage will fire events (and the default C++ handlers run) but does n't 466 // SVGImage will fire events (and the default C++ handlers run) but does n't
467 // actually allow script to run so it's fine to call into it. We allow t his 467 // actually allow script to run so it's fine to call into it. We allow t his
468 // since it means an SVG data url can synchronously load like other imag e 468 // since it means an SVG data url can synchronously load like other imag e
469 // types. 469 // types.
470 EventDispatchForbiddenScope::AllowUserAgentEvents allowUserAgentEvents; 470 EventDispatchForbiddenScope::AllowUserAgentEvents allowUserAgentEvents;
471 471
472 DEFINE_STATIC_LOCAL(Persistent<FrameLoaderClient>, dummyFrameLoaderClien t, (EmptyFrameLoaderClient::create())); 472 DEFINE_STATIC_LOCAL(FrameLoaderClient, dummyFrameLoaderClient, (EmptyFra meLoaderClient::create()));
473 473
474 if (m_page) { 474 if (m_page) {
475 toLocalFrame(m_page->mainFrame())->loader().load(FrameLoadRequest(0, blankURL(), SubstituteData(data(), AtomicString("image/svg+xml"), 475 toLocalFrame(m_page->mainFrame())->loader().load(FrameLoadRequest(0, blankURL(), SubstituteData(data(), AtomicString("image/svg+xml"),
476 AtomicString("UTF-8"), KURL(), ForceSynchronousLoad))); 476 AtomicString("UTF-8"), KURL(), ForceSynchronousLoad)));
477 return true; 477 return true;
478 } 478 }
479 479
480 Page::PageClients pageClients; 480 Page::PageClients pageClients;
481 fillWithEmptyClients(pageClients); 481 fillWithEmptyClients(pageClients);
482 m_chromeClient = SVGImageChromeClient::create(this); 482 m_chromeClient = SVGImageChromeClient::create(this);
(...skipping 22 matching lines...) Expand all
505 page->settings().setMinimumFontSize(defaultSettings.minimumFontS ize()); 505 page->settings().setMinimumFontSize(defaultSettings.minimumFontS ize());
506 page->settings().setMinimumLogicalFontSize(defaultSettings.minim umLogicalFontSize()); 506 page->settings().setMinimumLogicalFontSize(defaultSettings.minim umLogicalFontSize());
507 page->settings().setDefaultFontSize(defaultSettings.defaultFontS ize()); 507 page->settings().setDefaultFontSize(defaultSettings.defaultFontS ize());
508 page->settings().setDefaultFixedFontSize(defaultSettings.default FixedFontSize()); 508 page->settings().setDefaultFixedFontSize(defaultSettings.default FixedFontSize());
509 } 509 }
510 } 510 }
511 511
512 LocalFrame* frame = nullptr; 512 LocalFrame* frame = nullptr;
513 { 513 {
514 TRACE_EVENT0("blink", "SVGImage::dataChanged::createFrame"); 514 TRACE_EVENT0("blink", "SVGImage::dataChanged::createFrame");
515 frame = LocalFrame::create(dummyFrameLoaderClient.get(), &page->fram eHost(), 0); 515 frame = LocalFrame::create(&dummyFrameLoaderClient, &page->frameHost (), 0);
516 frame->setView(FrameView::create(frame)); 516 frame->setView(FrameView::create(frame));
517 frame->init(); 517 frame->init();
518 } 518 }
519 519
520 FrameLoader& loader = frame->loader(); 520 FrameLoader& loader = frame->loader();
521 loader.forceSandboxFlags(SandboxAll); 521 loader.forceSandboxFlags(SandboxAll);
522 522
523 frame->view()->setScrollbarsSuppressed(true); 523 frame->view()->setScrollbarsSuppressed(true);
524 frame->view()->setCanHaveScrollbars(false); // SVG Images will always sy nthesize a viewBox, if it's not available, and thus never see scrollbars. 524 frame->view()->setCanHaveScrollbars(false); // SVG Images will always sy nthesize a viewBox, if it's not available, and thus never see scrollbars.
525 frame->view()->setTransparent(true); // SVG Images are transparent. 525 frame->view()->setTransparent(true); // SVG Images are transparent.
(...skipping 10 matching lines...) Expand all
536 536
537 return m_page; 537 return m_page;
538 } 538 }
539 539
540 String SVGImage::filenameExtension() const 540 String SVGImage::filenameExtension() const
541 { 541 {
542 return "svg"; 542 return "svg";
543 } 543 }
544 544
545 } // namespace blink 545 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/svg/animation/SVGSMILElement.cpp ('k') | third_party/WebKit/Source/core/xml/XPathValue.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698