WebKit Bugzilla
Attachment 346749 Details for
Bug 188398
: Use fewer Strings as URLs
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-188398-20180807183541.patch (text/plain), 20.58 KB, created by
Alex Christensen
on 2018-08-07 18:35:42 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Alex Christensen
Created:
2018-08-07 18:35:42 PDT
Size:
20.58 KB
patch
obsolete
>Index: Source/WebKit/ChangeLog >=================================================================== >--- Source/WebKit/ChangeLog (revision 234682) >+++ Source/WebKit/ChangeLog (working copy) >@@ -1,3 +1,37 @@ >+2018-08-07 Alex Christensen <achristensen@webkit.org> >+ >+ Use fewer Strings as URLs >+ https://bugs.webkit.org/show_bug.cgi?id=188398 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * Shared/LoadParameters.cpp: >+ (WebKit::LoadParameters::encode const): >+ (WebKit::LoadParameters::decode): >+ * Shared/LoadParameters.h: >+ * UIProcess/API/C/WKPage.cpp: >+ (WKPageLoadData): >+ (WKPageLoadDataWithUserData): >+ (WKPageLoadHTMLString): >+ (WKPageLoadHTMLStringWithUserData): >+ * UIProcess/API/Cocoa/WKBrowsingContextController.mm: >+ (-[WKBrowsingContextController loadHTMLString:baseURL:userData:]): >+ (-[WKBrowsingContextController loadData:MIMEType:textEncodingName:baseURL:userData:]): >+ * UIProcess/API/Cocoa/WKWebView.mm: >+ (-[WKWebView loadData:MIMEType:characterEncodingName:baseURL:]): >+ (-[WKWebView _loadData:MIMEType:characterEncodingName:baseURL:userData:]): >+ * UIProcess/WebPageProxy.cpp: >+ (WebKit::WebPageProxy::loadData): >+ (WebKit::WebPageProxy::loadHTMLString): >+ (WebKit::WebPageProxy::loadAlternateHTMLString): >+ (WebKit::WebPageProxy::didFailProvisionalLoadForFrame): >+ * UIProcess/WebPageProxy.h: >+ * UIProcess/WebPageProxy.messages.in: >+ * WebProcess/WebPage/WebPage.cpp: >+ (WebKit::WebPage::loadData): >+ (WebKit::WebPage::loadString): >+ (WebKit::WebPage::loadAlternateHTMLString): >+ > 2018-08-07 Ben Richards <benton_richards@apple.com> > > Add SPI for launching WebContent process with pre-linked injected bundle >Index: Source/WebKit/Shared/LoadParameters.cpp >=================================================================== >--- Source/WebKit/Shared/LoadParameters.cpp (revision 234663) >+++ Source/WebKit/Shared/LoadParameters.cpp (working copy) >@@ -44,9 +44,9 @@ void LoadParameters::encode(IPC::Encoder > encoder << string; > encoder << MIMEType; > encoder << encodingName; >- encoder << baseURLString; >- encoder << unreachableURLString; >- encoder << provisionalLoadErrorURLString; >+ encoder << baseURL; >+ encoder << unreachableURL; >+ encoder << provisionalLoadErrorURL; > encoder << shouldOpenExternalURLsPolicy; > encoder << shouldTreatAsContinuingLoad; > encoder << userData; >@@ -91,13 +91,13 @@ bool LoadParameters::decode(IPC::Decoder > if (!decoder.decode(data.encodingName)) > return false; > >- if (!decoder.decode(data.baseURLString)) >+ if (!decoder.decode(data.baseURL)) > return false; > >- if (!decoder.decode(data.unreachableURLString)) >+ if (!decoder.decode(data.unreachableURL)) > return false; > >- if (!decoder.decode(data.provisionalLoadErrorURLString)) >+ if (!decoder.decode(data.provisionalLoadErrorURL)) > return false; > > if (!decoder.decode(data.shouldOpenExternalURLsPolicy)) >Index: Source/WebKit/Shared/LoadParameters.h >=================================================================== >--- Source/WebKit/Shared/LoadParameters.h (revision 234663) >+++ Source/WebKit/Shared/LoadParameters.h (working copy) >@@ -23,8 +23,7 @@ > * THE POSSIBILITY OF SUCH DAMAGE. > */ > >-#ifndef LoadParameters_h >-#define LoadParameters_h >+#pragma once > > #include "DataReference.h" > #include "SandboxExtension.h" >@@ -57,9 +56,9 @@ struct LoadParameters { > String MIMEType; > String encodingName; > >- String baseURLString; >- String unreachableURLString; >- String provisionalLoadErrorURLString; >+ WebCore::URL baseURL; >+ WebCore::URL unreachableURL; >+ WebCore::URL provisionalLoadErrorURL; > > uint64_t shouldOpenExternalURLsPolicy; > bool shouldTreatAsContinuingLoad { false }; >@@ -71,5 +70,3 @@ struct LoadParameters { > }; > > } // namespace WebKit >- >-#endif // LoadParameters_h >Index: Source/WebKit/UIProcess/WebPageProxy.cpp >=================================================================== >--- Source/WebKit/UIProcess/WebPageProxy.cpp (revision 234663) >+++ Source/WebKit/UIProcess/WebPageProxy.cpp (working copy) >@@ -1048,7 +1048,7 @@ RefPtr<API::Navigation> WebPageProxy::lo > return WTFMove(navigation); > } > >-RefPtr<API::Navigation> WebPageProxy::loadData(API::Data* data, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData) >+RefPtr<API::Navigation> WebPageProxy::loadData(API::Data* data, const String& MIMEType, const String& encoding, const URL& baseURL, API::Object* userData) > { > if (m_isClosed) > return nullptr; >@@ -1067,7 +1067,7 @@ RefPtr<API::Navigation> WebPageProxy::lo > loadParameters.data = data->dataReference(); > loadParameters.MIMEType = MIMEType; > loadParameters.encodingName = encoding; >- loadParameters.baseURLString = baseURL; >+ loadParameters.baseURL = baseURL; > loadParameters.userData = UserData(process().transformObjectsToHandles(userData).get()); > addPlatformLoadParameters(loadParameters); > >@@ -1079,7 +1079,7 @@ RefPtr<API::Navigation> WebPageProxy::lo > } > > // FIXME: Get rid of loadHTMLString and just use loadData instead. >-RefPtr<API::Navigation> WebPageProxy::loadHTMLString(const String& htmlString, const String& baseURL, API::Object* userData) >+RefPtr<API::Navigation> WebPageProxy::loadHTMLString(const String& htmlString, const URL& baseURL, API::Object* userData) > { > if (m_isClosed) > return nullptr; >@@ -1088,7 +1088,7 @@ RefPtr<API::Navigation> WebPageProxy::lo > > auto transaction = m_pageLoadState.transaction(); > >- m_pageLoadState.setPendingAPIRequestURL(transaction, !baseURL.isEmpty() ? baseURL : blankURL().string()); >+ m_pageLoadState.setPendingAPIRequestURL(transaction, !baseURL.isEmpty() ? baseURL : blankURL()); > > if (!isValid()) > reattachToWebProcess(); >@@ -1097,7 +1097,7 @@ RefPtr<API::Navigation> WebPageProxy::lo > loadParameters.navigationID = navigation->navigationID(); > loadParameters.string = htmlString; > loadParameters.MIMEType = "text/html"_s; >- loadParameters.baseURLString = baseURL; >+ loadParameters.baseURL = baseURL; > loadParameters.userData = UserData(process().transformObjectsToHandles(userData).get()); > addPlatformLoadParameters(loadParameters); > >@@ -1133,9 +1133,9 @@ void WebPageProxy::loadAlternateHTMLStri > LoadParameters loadParameters; > loadParameters.navigationID = 0; > loadParameters.string = htmlString; >- loadParameters.baseURLString = baseURL; >- loadParameters.unreachableURLString = unreachableURL; >- loadParameters.provisionalLoadErrorURLString = m_failingProvisionalLoadURL; >+ loadParameters.baseURL = baseURL; >+ loadParameters.unreachableURL = unreachableURL; >+ loadParameters.provisionalLoadErrorURL = m_failingProvisionalLoadURL; > loadParameters.userData = UserData(process().transformObjectsToHandles(userData).get()); > addPlatformLoadParameters(loadParameters); > >@@ -3578,9 +3578,9 @@ void WebPageProxy::didChangeProvisionalU > frame->didReceiveServerRedirectForProvisionalLoad(url); > } > >-void WebPageProxy::didFailProvisionalLoadForFrame(uint64_t frameID, const SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, const String& provisionalURL, const ResourceError& error, const UserData& userData) >+void WebPageProxy::didFailProvisionalLoadForFrame(uint64_t frameID, const SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, const URL& provisionalURL, const ResourceError& error, const UserData& userData) > { >- LOG(Loading, "(Loading) WebPageProxy %" PRIu64 " in web process pid %i didFailProvisionalLoadForFrame to provisionalURL %s", m_pageID, m_process->processIdentifier(), provisionalURL.utf8().data()); >+ LOG(Loading, "(Loading) WebPageProxy %" PRIu64 " in web process pid %i didFailProvisionalLoadForFrame to provisionalURL %s", m_pageID, m_process->processIdentifier(), provisionalURL.string().utf8().data()); > > PageClientProtector protector(m_pageClient); > >Index: Source/WebKit/UIProcess/WebPageProxy.h >=================================================================== >--- Source/WebKit/UIProcess/WebPageProxy.h (revision 234663) >+++ Source/WebKit/UIProcess/WebPageProxy.h (working copy) >@@ -456,8 +456,8 @@ public: > void addPlatformLoadParameters(LoadParameters&); > RefPtr<API::Navigation> loadRequest(WebCore::ResourceRequest&&, WebCore::ShouldOpenExternalURLsPolicy = WebCore::ShouldOpenExternalURLsPolicy::ShouldAllowExternalSchemes, API::Object* userData = nullptr); > RefPtr<API::Navigation> loadFile(const String& fileURL, const String& resourceDirectoryURL, API::Object* userData = nullptr); >- RefPtr<API::Navigation> loadData(API::Data*, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData = nullptr); >- RefPtr<API::Navigation> loadHTMLString(const String& htmlString, const String& baseURL, API::Object* userData = nullptr); >+ RefPtr<API::Navigation> loadData(API::Data*, const String& MIMEType, const String& encoding, const WebCore::URL& baseURL, API::Object* userData = nullptr); >+ RefPtr<API::Navigation> loadHTMLString(const String& htmlString, const WebCore::URL& baseURL, API::Object* userData = nullptr); > void loadAlternateHTMLString(const String& htmlString, const WebCore::URL& baseURL, const WebCore::URL& unreachableURL, API::Object* userData = nullptr); > void loadPlainTextString(const String&, API::Object* userData = nullptr); > void loadWebArchiveData(API::Data*, API::Object* userData = nullptr); >@@ -1404,7 +1404,7 @@ private: > void willPerformClientRedirectForFrame(uint64_t frameID, const String& url, double delay); > void didCancelClientRedirectForFrame(uint64_t frameID); > void didChangeProvisionalURLForFrame(uint64_t frameID, uint64_t navigationID, WebCore::URL&&); >- void didFailProvisionalLoadForFrame(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, const String& provisionalURL, const WebCore::ResourceError&, const UserData&); >+ void didFailProvisionalLoadForFrame(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, const WebCore::URL& provisionalURL, const WebCore::ResourceError&, const UserData&); > void didCommitLoadForFrame(uint64_t frameID, uint64_t navigationID, const String& mimeType, bool frameHasCustomContentProvider, uint32_t frameLoadType, const WebCore::CertificateInfo&, bool containsPluginDocument, std::optional<WebCore::HasInsecureContent> forcedHasInsecureContent, const UserData&); > void didFinishDocumentLoadForFrame(uint64_t frameID, uint64_t navigationID, const UserData&); > void didFinishLoadForFrame(uint64_t frameID, uint64_t navigationID, const UserData&); >@@ -1843,7 +1843,7 @@ private: > std::unique_ptr<WebPageInjectedBundleClient> m_injectedBundleClient; > > std::unique_ptr<WebNavigationState> m_navigationState; >- String m_failingProvisionalLoadURL; >+ WebCore::URL m_failingProvisionalLoadURL; > bool m_isLoadingAlternateHTMLStringForFailingProvisionalLoad { false }; > > std::unique_ptr<DrawingAreaProxy> m_drawingArea; >Index: Source/WebKit/UIProcess/WebPageProxy.messages.in >=================================================================== >--- Source/WebKit/UIProcess/WebPageProxy.messages.in (revision 234663) >+++ Source/WebKit/UIProcess/WebPageProxy.messages.in (working copy) >@@ -130,7 +130,7 @@ messages -> WebPageProxy { > WillPerformClientRedirectForFrame(uint64_t frameID, String url, double delay) > DidCancelClientRedirectForFrame(uint64_t frameID) > DidChangeProvisionalURLForFrame(uint64_t frameID, uint64_t navigationID, WebCore::URL url) >- DidFailProvisionalLoadForFrame(uint64_t frameID, struct WebCore::SecurityOriginData frameSecurityOrigin, uint64_t navigationID, String provisionalURL, WebCore::ResourceError error, WebKit::UserData userData) >+ DidFailProvisionalLoadForFrame(uint64_t frameID, struct WebCore::SecurityOriginData frameSecurityOrigin, uint64_t navigationID, WebCore::URL provisionalURL, WebCore::ResourceError error, WebKit::UserData userData) > DidCommitLoadForFrame(uint64_t frameID, uint64_t navigationID, String mimeType, bool hasCustomContentProvider, uint32_t loadType, WebCore::CertificateInfo certificateInfo, bool containsPluginDocument, std::optional<WebCore::HasInsecureContent> forcedHasInsecureContent, WebKit::UserData userData) > DidFailLoadForFrame(uint64_t frameID, uint64_t navigationID, WebCore::ResourceError error, WebKit::UserData userData) > DidFinishDocumentLoadForFrame(uint64_t frameID, uint64_t navigationID, WebKit::UserData userData) >Index: Source/WebKit/UIProcess/API/C/WKPage.cpp >=================================================================== >--- Source/WebKit/UIProcess/API/C/WKPage.cpp (revision 234663) >+++ Source/WebKit/UIProcess/API/C/WKPage.cpp (working copy) >@@ -191,22 +191,22 @@ void WKPageLoadFileWithUserData(WKPageRe > > void WKPageLoadData(WKPageRef pageRef, WKDataRef dataRef, WKStringRef MIMETypeRef, WKStringRef encodingRef, WKURLRef baseURLRef) > { >- toImpl(pageRef)->loadData(toImpl(dataRef), toWTFString(MIMETypeRef), toWTFString(encodingRef), toWTFString(baseURLRef)); >+ toImpl(pageRef)->loadData(toImpl(dataRef), toWTFString(MIMETypeRef), toWTFString(encodingRef), URL(URL(), toWTFString(baseURLRef))); > } > > void WKPageLoadDataWithUserData(WKPageRef pageRef, WKDataRef dataRef, WKStringRef MIMETypeRef, WKStringRef encodingRef, WKURLRef baseURLRef, WKTypeRef userDataRef) > { >- toImpl(pageRef)->loadData(toImpl(dataRef), toWTFString(MIMETypeRef), toWTFString(encodingRef), toWTFString(baseURLRef), toImpl(userDataRef)); >+ toImpl(pageRef)->loadData(toImpl(dataRef), toWTFString(MIMETypeRef), toWTFString(encodingRef), URL(URL(), toWTFString(baseURLRef)), toImpl(userDataRef)); > } > > void WKPageLoadHTMLString(WKPageRef pageRef, WKStringRef htmlStringRef, WKURLRef baseURLRef) > { >- toImpl(pageRef)->loadHTMLString(toWTFString(htmlStringRef), toWTFString(baseURLRef)); >+ toImpl(pageRef)->loadHTMLString(toWTFString(htmlStringRef), URL(URL(), toWTFString(baseURLRef))); > } > > void WKPageLoadHTMLStringWithUserData(WKPageRef pageRef, WKStringRef htmlStringRef, WKURLRef baseURLRef, WKTypeRef userDataRef) > { >- toImpl(pageRef)->loadHTMLString(toWTFString(htmlStringRef), toWTFString(baseURLRef), toImpl(userDataRef)); >+ toImpl(pageRef)->loadHTMLString(toWTFString(htmlStringRef), URL(URL(), toWTFString(baseURLRef)), toImpl(userDataRef)); > } > > void WKPageLoadAlternateHTMLString(WKPageRef pageRef, WKStringRef htmlStringRef, WKURLRef baseURLRef, WKURLRef unreachableURLRef) >Index: Source/WebKit/UIProcess/API/Cocoa/WKBrowsingContextController.mm >=================================================================== >--- Source/WebKit/UIProcess/API/Cocoa/WKBrowsingContextController.mm (revision 234663) >+++ Source/WebKit/UIProcess/API/Cocoa/WKBrowsingContextController.mm (working copy) >@@ -153,7 +153,7 @@ - (void)loadHTMLString:(NSString *)HTMLS > if (userData) > wkUserData = ObjCObjectGraph::create(userData); > >- _page->loadHTMLString(HTMLString, [baseURL _web_originalDataAsWTFString], wkUserData.get()); >+ _page->loadHTMLString(HTMLString, baseURL, wkUserData.get()); > } > > - (void)loadAlternateHTMLString:(NSString *)string baseURL:(NSURL *)baseURL forUnreachableURL:(NSURL *)unreachableURL >@@ -178,7 +178,7 @@ - (void)loadData:(NSData *)data MIMEType > if (userData) > wkUserData = ObjCObjectGraph::create(userData); > >- _page->loadData(apiData.get(), MIMEType, encodingName, [baseURL _web_originalDataAsWTFString], wkUserData.get()); >+ _page->loadData(apiData.get(), MIMEType, encodingName, baseURL, wkUserData.get()); > } > > - (void)stopLoading >Index: Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm >=================================================================== >--- Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm (revision 234663) >+++ Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm (working copy) >@@ -903,7 +903,7 @@ - (WKNavigation *)loadHTMLString:(NSStri > > - (WKNavigation *)loadData:(NSData *)data MIMEType:(NSString *)MIMEType characterEncodingName:(NSString *)characterEncodingName baseURL:(NSURL *)baseURL > { >- auto navigation = _page->loadData(API::Data::createWithoutCopying(data).ptr(), MIMEType, characterEncodingName, baseURL.absoluteString); >+ auto navigation = _page->loadData(API::Data::createWithoutCopying(data).ptr(), MIMEType, characterEncodingName, baseURL); > if (!navigation) > return nil; > >@@ -4237,7 +4237,7 @@ - (void)_loadAlternateHTMLString:(NSStri > > - (WKNavigation *)_loadData:(NSData *)data MIMEType:(NSString *)MIMEType characterEncodingName:(NSString *)characterEncodingName baseURL:(NSURL *)baseURL userData:(id)userData > { >- auto navigation = _page->loadData(API::Data::createWithoutCopying(data).ptr(), MIMEType, characterEncodingName, baseURL.absoluteString, WebKit::ObjCObjectGraph::create(userData).ptr()); >+ auto navigation = _page->loadData(API::Data::createWithoutCopying(data).ptr(), MIMEType, characterEncodingName, baseURL, WebKit::ObjCObjectGraph::create(userData).ptr()); > if (!navigation) > return nil; > >Index: Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp >=================================================================== >--- Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp (revision 234663) >+++ Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp (working copy) >@@ -2583,7 +2583,7 @@ void webkit_web_view_load_html(WebKitWeb > g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); > g_return_if_fail(content); > >- getPage(webView).loadHTMLString(String::fromUTF8(content), String::fromUTF8(baseURI)); >+ getPage(webView).loadHTMLString(String::fromUTF8(content), WebCore::URL(WebCore::URL(), String::fromUTF8(baseURI))); > } > > /** >@@ -2661,7 +2661,7 @@ void webkit_web_view_load_bytes(WebKitWe > > Ref<API::Data> data = API::Data::createWithoutCopying(static_cast<const unsigned char*>(bytesData), bytesDataSize, releaseGBytes, bytes); > getPage(webView).loadData(data.ptr(), mimeType ? String::fromUTF8(mimeType) : String::fromUTF8("text/html"), >- encoding ? String::fromUTF8(encoding) : String::fromUTF8("UTF-8"), String::fromUTF8(baseURI)); >+ encoding ? String::fromUTF8(encoding) : String::fromUTF8("UTF-8"), WebCore::URL(WebCore::URL(), String::fromUTF8(baseURI))); > } > > /** >Index: Source/WebKit/WebProcess/WebPage/WebPage.cpp >=================================================================== >--- Source/WebKit/WebProcess/WebPage/WebPage.cpp (revision 234663) >+++ Source/WebKit/WebProcess/WebPage/WebPage.cpp (working copy) >@@ -1323,7 +1323,7 @@ void WebPage::loadData(const LoadParamet > platformDidReceiveLoadParameters(loadParameters); > > auto sharedBuffer = SharedBuffer::create(reinterpret_cast<const char*>(loadParameters.data.data()), loadParameters.data.size()); >- URL baseURL = loadParameters.baseURLString.isEmpty() ? blankURL() : URL(URL(), loadParameters.baseURLString); >+ URL baseURL = loadParameters.baseURL.isEmpty() ? blankURL() : loadParameters.baseURL; > loadDataImpl(loadParameters.navigationID, WTFMove(sharedBuffer), loadParameters.MIMEType, loadParameters.encodingName, baseURL, URL(), loadParameters.userData); > } > >@@ -1331,7 +1331,7 @@ void WebPage::loadString(const LoadParam > { > platformDidReceiveLoadParameters(loadParameters); > >- URL baseURL = loadParameters.baseURLString.isEmpty() ? blankURL() : URL(URL(), loadParameters.baseURLString); >+ URL baseURL = loadParameters.baseURL.isEmpty() ? blankURL() : loadParameters.baseURL; > loadStringImpl(loadParameters.navigationID, loadParameters.string, loadParameters.MIMEType, baseURL, URL(), loadParameters.userData); > } > >@@ -1339,9 +1339,9 @@ void WebPage::loadAlternateHTMLString(co > { > platformDidReceiveLoadParameters(loadParameters); > >- URL baseURL = loadParameters.baseURLString.isEmpty() ? blankURL() : URL(URL(), loadParameters.baseURLString); >- URL unreachableURL = loadParameters.unreachableURLString.isEmpty() ? URL() : URL(URL(), loadParameters.unreachableURLString); >- URL provisionalLoadErrorURL = loadParameters.provisionalLoadErrorURLString.isEmpty() ? URL() : URL(URL(), loadParameters.provisionalLoadErrorURLString); >+ URL baseURL = loadParameters.baseURL.isEmpty() ? blankURL() : loadParameters.baseURL; >+ URL unreachableURL = loadParameters.unreachableURL.isEmpty() ? URL() : loadParameters.unreachableURL; >+ URL provisionalLoadErrorURL = loadParameters.provisionalLoadErrorURL.isEmpty() ? URL() : loadParameters.provisionalLoadErrorURL; > m_mainFrame->coreFrame()->loader().setProvisionalLoadErrorBeingHandledURL(provisionalLoadErrorURL); > loadStringImpl(0, loadParameters.string, "text/html"_s, baseURL, unreachableURL, loadParameters.userData); > m_mainFrame->coreFrame()->loader().setProvisionalLoadErrorBeingHandledURL({ });
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
mcatanzaro
:
review+
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 188398
:
346746
| 346749