summaryrefslogtreecommitdiff
path: root/indra/newview/llfloaterreporter.cpp
AgeCommit message (Collapse)Author
2020-07-20Merge branch 'master' into DRTVWR-501-maintAndrey Lihatskiy
# Conflicts: # autobuild.xml # indra/newview/llimprocessing.cpp
2020-03-28Merge branch 'master' into DRTVWR-501-maintAndrey Lihatskiy
2020-03-25SL-11216: Convert LLVersionInfo to an LLSingleton.Nat Goodspeed
This changeset is meant to exemplify how to convert a "namespace" class whose methods are static -- and whose data are module-static -- to an LLSingleton. LLVersionInfo has no initClass() or cleanupClass() methods, but the general idea is the same. * Derive the class from LLSingleton<T>: class LLSomeSingleton: public LLSingleton<LLSomeSingleton> { ... }; * Add LLSINGLETON(LLSomeSingleton); in the private section of the class. This usage implies a separate LLSomeSingleton::LLSomeSingleton() definition, as described in indra/llcommon/llsingleton.h. * Move module-scope data in the .cpp file to non-static class members. Change any sVariableName to mVariableName to avoid being outright misleading. * Make static class methods non-static. Remove '//static' comments from method definitions as needed. * For LLVersionInfo specifically, the 'const std::string&' return type was replaced with 'std::string'. Returning a reference to a static or a member, const or otherwise, is an anti-pattern: the interface constrains the implementation, prohibiting possibly later returning a temporary (an expression). * For LLVersionInfo specifically, 'const S32' return type was replaced with simple 'S32'. 'const' is just noise in that usage. * Simple member initialization (e.g. the original initializer expressions for static variables) can be done with member{ value } initializers (no examples here though). * Delete initClass() method. * LLSingleton's forté is of course lazy initialization. It might work to simply delete any calls to initClass(). But if there are side effects that must happen at that moment, replace LLSomeSingleton::initClass() with (void)LLSomeSingleton::instance(); * Most initClass() initialization can be done in the constructor, as would normally be the case. * Initialization that might cause a circular LLSingleton reference should be moved to initSingleton(). Override 'void initSingleton();' should be private. * For LLVersionInfo specifically, certain initialization that used to be lazily performed was made unconditional, due to its low cost. * For LLVersionInfo specifically, certain initialization involved calling methods that have become non-static. This was moved to initSingleton() because, in a constructor body, 'this' does not yet point to the enclosing class. * Delete cleanupClass() method. * There is already a generic LLSingletonBase::deleteAll() call in LLAppViewer::cleanup(). It might work to let this new LLSingleton be cleaned up with all the rest. But if there are side effects that must happen at that moment, replace LLSomeSingleton::cleanupClass() with LLSomeSingleton::deleteSingleton(). That said, much of the benefit of converting to LLSingleton is deleteAll()'s guarantee that cross-LLSingleton dependencies will be properly honored: we're trying to migrate the code base away from the present fragile manual cleanup sequence. * Most cleanupClass() cleanup can be done in the destructor, as would normally be the case. * Cleanup that might throw an exception should be moved to cleanupSingleton(). Override 'void cleanupSingleton();' should be private. * Within LLSomeSingleton methods, remove any existing LLSomeSingleton::methodName() qualification: simple methodName() is better. * In the rest of the code base, convert most LLSomeSingleton::methodName() references to LLSomeSingleton::instance().methodName(). (Prefer instance() to getInstance() because a reference does not admit the possibility of NULL.) * Of course, LLSomeSingleton::ENUM_VALUE can remain unchanged. In general, for many successive references to an LLSingleton instance, it can be useful to capture the instance() as in: auto& versionInfo{LLVersionInfo::instance()}; // ... versionInfo.getVersion() ... We did not do that here only to simplify the code review. The STRINGIZE(expression) macro encapsulates: std::ostringstream out; out << expression; return out.str(); We used that in a couple places. For LLVersionInfo specifically, lllogininstance_test.cpp used to dummy out a couple specific static methods. It's harder to dummy out LLSingleton::instance() references, so we add the real class to that test.
2019-11-15SL-11898 Hi-res snapshots do not support UI and HUDs and should not show themandreykproductengine
2019-11-14SL-10499, SL-10497 - use LLAgentBenefits infoBrad Payne (Vir Linden)
2019-06-12SL-11402 Floater reporter images should be saved as pngandreykproductengine
2018-04-06SL-440 Fix coroutine nameAndrey Kleshchev
2018-03-30SL-440 Obtain Abuse Report categories from capabilityAndrey Kleshchev
2018-03-09MAINT-8366 FIXED "Report Abuse" preview screenshot all blackmaxim_productengine
2018-01-11MAINT-8170 Crash viewer when double click on "Report Abuse"Mnikolenko Productengine
2017-09-13MAINT-7794 Wrap getCapability(..) calls to avoid crashesMnikolenko Productengine
2017-01-24MAINT-7067 Issue with UI artifacts showing up in Abuse Report screenshots.Mnikolenko Productengine
2017-01-19MAINT-7066 Issues where viewer always asks to use previous screenshot when ↵Mnikolenko Productengine
filing abuse report.
2016-10-04MAINT-6779 Allow to use last pic from Abuse report floater after relogMnikolenko Productengine
2016-09-12SL-444 Add Abuse Report Submision Confirmation Pop upMnikolenko Productengine
2016-08-10SL-437 Remove Checkbox from Abuse Report SubmissionMnikolenko Productengine
2016-04-04merge with 4.0.3-releaseOz Linden
2015-11-10remove execute permission from many files that should not have itOz Linden
2015-10-19Merge from viewer release.Rider Linden
2015-09-03Changes from code review with NatRider Linden
2015-09-01MAINT-5575: Convert the Experience cache into a coro based singleton.Rider Linden
--HG-- branch : MAINT-5575
2015-08-25MergeRider Linden
2015-08-05MAINT-5348 FIXED Use this screenshot option will be checked by default now.Mnikolenko ProductEngine
2015-07-23Remove unused code and llassetuploadresponders files.Rider Linden
2015-07-23AR Reports now use coroutines.Rider Linden
2015-07-01Merge from viewer-relese and become version 3.8.1andreykproductengine
2015-06-08merge changes for 3.7.29-releaseOz Linden
2015-07-02Merge from viewer-relese and become version 3.8.1andreykproductengine
2015-04-28increment viewer version to 3.7.29Mnikolenko ProductEngine
2015-04-28Merge viewer-release, become version 3.7.29Mnikolenko ProductEngine
2015-03-04MAINT-4939 FIXED Remove Abuse Report Pop-Up Dialogandreykproductengine
2014-10-18Update to build on Xcode 6.0: remove lots of unused variablescallum_linden
2014-06-17Merge with 3.7.9-releasedolphin
2014-05-13sunshine-external merge WIPBrad Payne (Vir Linden)
2014-05-07Merge with 3.7.7-releasedolphin
2014-04-23Clear abuse details before adding experience id for ACME-1421Cho
2014-03-20Experience log paneldolphin
2014-03-17Updated experience cache to get a const reference to xp datadolphin
2014-03-13Added a Report Abuse button to the experience profiledolphin
2013-08-09second phase summer cleaningRichard Linden
replace llinfos, lldebugs, etc with new LL_INFOS(), LL_DEBUGS(), etc.
2013-07-08SH-4299 WIP: Interesting: High fps shown temporarily off scale in statistics ↵Richard Linden
console added percentage/ratio units added auto-range and auto tick calculation to stat bar to automate display stats
2013-05-21mergeBrad Payne (Vir Linden)
2013-04-19merge changes for DRTVWR-294Oz Linden
2013-03-29Update Mac and Windows breakpad builds to latestGraham Madarasz
2013-03-13Merging LLCURL::Responder changes with CHUI changes. Fixed gcc 4.6 compile ↵Don Kjer
failures
2013-03-13Large changes to the LLCurl::Responder API, as well as pulling in some ↵Don Kjer
changes to common libraries from the server codebase: * Additional error checking in http handlers. * Uniform log spam for http errors. * Switch to using constants for http heads and status codes. * Fixed bugs in incorrectly checking if parsing LLSD xml resulted in an error. * Reduced spam regarding LLSD parsing errors in the default completedRaw http handler. It should not longer be necessary to short-circuit completedRaw to avoid spam. * Ported over a few bug fixes from the server code. * Switch mode http status codes to use S32 instead of U32. * Ported LLSD::asStringRef from server code; avoids copying strings all over the place. * Ported server change to LLSD::asBinary; this always returns a reference now instead of copying the entire binary blob. * Ported server pretty notation format (and pretty binary format) to llsd serialization. * The new LLCurl::Responder API no longer has two error handlers to choose from. Overriding the following methods have been deprecated: ** error - use httpFailure ** errorWithContent - use httpFailure ** result - use httpSuccess ** completed - use httpCompleted ** completedHeader - no longer necessary; call getResponseHeaders() from a completion method to obtain these headers. * In order to 'catch' a completed http request, override one of these methods: ** httpSuccess - Called for any 2xx status code. ** httpFailure - Called for any non-2xx status code. ** httpComplete - Called for all status codes. Default implementation is to call either httpSuccess or httpFailure. * It is recommended to keep these methods protected/private in order to avoid triggering of these methods without using a 'push' method (see below). * Uniform error handling should followed whenever possible by calling a variant of this during httpFailure: ** llwarns << dumpResponse() << llendl; * Be sure to include LOG_CLASS(your_class_name) in your class in order for the log entry to give more context. * In order to 'push' a result into the responder, you should no longer call error, errorWithContent, result, or completed. * Nor should you directly call httpSuccess/Failure/Completed (unless passing a message up to a parent class). * Instead, you can set the internal content of a responder and trigger a corresponding method using the following methods: ** successResult - Sets results and calls httpSuccess ** failureResult - Sets results and calls httpFailure ** completedResult - Sets results and calls httpCompleted * To obtain information about a the response from a reponder method, use the following getters: ** getStatus - HTTP status code ** getReason - Reason string ** getContent - Content (Parsed body LLSD) ** getResponseHeaders - Response Headers (LLSD map) ** getHTTPMethod - HTTP method of the request ** getURL - URL of the request * It is still possible to override completeRaw if you want to manipulate data directly out of LLPumpIO. * See indra/llmessage/llcurl.h for more information.
2013-03-11mergeprep
2013-03-11Viewer-chui mergeprep
2013-03-08SH-3959 WIP - pass information about type of fetched image - server bake, ↵Brad Payne (Vir Linden)
host bake, map tile, etc - down the chain so LLTextureFetchWorker can adjust behavior as needed
2013-03-05Fixing issues with not detecting when LLSD XML parsing fails. Changing most ↵Don Kjer
http error handlers to understand LLSD error responses. Fleshing out most http error handler message spam.