summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRider Linden <rider@lindenlab.com>2015-07-23 11:28:21 -0700
committerRider Linden <rider@lindenlab.com>2015-07-23 11:28:21 -0700
commita035d78e25551a77a7a1513c3cee8b9dca117540 (patch)
tree93b11a12c96f812d630bc0264ad5efa57e002146
parent62e83193c55e505d83a9be33cbc30353b6b887d2 (diff)
AR Reports now use coroutines.
-rwxr-xr-xindra/newview/llfloaterreporter.cpp107
-rwxr-xr-xindra/newview/llfloaterreporter.h2
-rw-r--r--indra/newview/llviewerassetupload.cpp22
-rw-r--r--indra/newview/llviewerassetupload.h5
4 files changed, 88 insertions, 48 deletions
diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp
index 5e028e6d43..b38362e180 100755
--- a/indra/newview/llfloaterreporter.cpp
+++ b/indra/newview/llfloaterreporter.cpp
@@ -83,6 +83,61 @@
#include "lltrans.h"
#include "llexperiencecache.h"
+#include "llcorehttputil.h"
+#include "llviewerassetupload.h"
+
+
+//=========================================================================
+//-----------------------------------------------------------------------------
+// Support classes
+//-----------------------------------------------------------------------------
+class LLARScreenShotUploader : public LLResourceUploadInfo
+{
+public:
+ LLARScreenShotUploader(LLSD report, LLUUID assetId, LLAssetType::EType assetType);
+
+ virtual LLSD prepareUpload();
+ virtual LLSD generatePostBody();
+ virtual S32 getEconomyUploadCost();
+ virtual LLUUID finishUpload(LLSD &result);
+
+ virtual bool showInventoryPanel() const { return false; }
+ virtual std::string getDisplayName() const { return "Abuse Report"; }
+
+private:
+
+ LLSD mReport;
+};
+
+LLARScreenShotUploader::LLARScreenShotUploader(LLSD report, LLUUID assetId, LLAssetType::EType assetType) :
+ LLResourceUploadInfo(assetId, assetType, "Abuse Report"),
+ mReport(report)
+{
+}
+
+LLSD LLARScreenShotUploader::prepareUpload()
+{
+ return LLSD().with("success", LLSD::Boolean(true));
+}
+
+LLSD LLARScreenShotUploader::generatePostBody()
+{ // The report was pregenerated and passed in the constructor.
+ return mReport;
+}
+
+S32 LLARScreenShotUploader::getEconomyUploadCost()
+{ // Abuse report screen shots do not cost anything to upload.
+ return 0;
+}
+
+LLUUID LLARScreenShotUploader::finishUpload(LLSD &result)
+{
+ /* *TODO$: Report success or failure. Carried over from previous todo on responder*/
+ return LLUUID::null;
+}
+
+
+//=========================================================================
//-----------------------------------------------------------------------------
// Globals
//-----------------------------------------------------------------------------
@@ -724,59 +779,25 @@ void LLFloaterReporter::sendReportViaLegacy(const LLSD & report)
msg->sendReliable(regionp->getHost());
}
-class LLUserReportScreenshotResponder : public LLAssetUploadResponder
+void LLFloaterReporter::finishedARPost(const LLSD &)
{
-public:
- LLUserReportScreenshotResponder(const LLSD & post_data,
- const LLUUID & vfile_id,
- LLAssetType::EType asset_type):
- LLAssetUploadResponder(post_data, vfile_id, asset_type)
- {
- }
- void uploadFailed(const LLSD& content)
- {
- // *TODO pop up a dialog so the user knows their report screenshot didn't make it
- LLUploadDialog::modalUploadFinished();
- }
- void uploadComplete(const LLSD& content)
- {
- // we don't care about what the server returns from this post, just clean up the UI
- LLUploadDialog::modalUploadFinished();
- }
-};
+ LLUploadDialog::modalUploadFinished();
-class LLUserReportResponder : public LLHTTPClient::Responder
-{
- LOG_CLASS(LLUserReportResponder);
-public:
- LLUserReportResponder(): LLHTTPClient::Responder() {}
-
-private:
- void httpCompleted()
- {
- if (!isGoodStatus())
- {
- // *TODO do some user messaging here
- LL_WARNS("UserReport") << dumpResponse() << LL_ENDL;
- }
- // we don't care about what the server returns
- LLUploadDialog::modalUploadFinished();
- }
-};
+}
void LLFloaterReporter::sendReportViaCaps(std::string url, std::string sshot_url, const LLSD& report)
{
if(getChild<LLUICtrl>("screen_check")->getValue().asBoolean() && !sshot_url.empty())
- {
+ {
// try to upload screenshot
- LLHTTPClient::post(sshot_url, report, new LLUserReportScreenshotResponder(report,
- mResourceDatap->mAssetInfo.mUuid,
- mResourceDatap->mAssetInfo.mType));
+ LLResourceUploadInfo::ptr_t uploadInfo(new LLARScreenShotUploader(report, mResourceDatap->mAssetInfo.mUuid, mResourceDatap->mAssetInfo.mType));
+ LLViewerAssetUpload::EnqueueInventoryUpload(sshot_url, uploadInfo);
}
else
{
- // screenshot not wanted or we don't have screenshot cap
- LLHTTPClient::post(url, report, new LLUserReportResponder());
+ LLCoreHttpUtil::HttpCoroutineAdapter::completionCallback_t proc = boost::bind(&LLFloaterReporter::finishedARPost, _1);
+ LLUploadDialog::modalUploadDialog("Abuse Report");
+ LLCoreHttpUtil::HttpCoroutineAdapter::callbackHttpPost(url, report, proc, proc);
}
}
diff --git a/indra/newview/llfloaterreporter.h b/indra/newview/llfloaterreporter.h
index 5eb5c20665..83050d73ca 100755
--- a/indra/newview/llfloaterreporter.h
+++ b/indra/newview/llfloaterreporter.h
@@ -125,6 +125,8 @@ private:
void setFromAvatarID(const LLUUID& avatar_id);
void onAvatarNameCache(const LLUUID& avatar_id, const LLAvatarName& av_name);
+ static void finishedARPost(const LLSD &);
+
private:
EReportType mReportType;
LLUUID mObjectID;
diff --git a/indra/newview/llviewerassetupload.cpp b/indra/newview/llviewerassetupload.cpp
index 83d3449b96..4ef398d314 100644
--- a/indra/newview/llviewerassetupload.cpp
+++ b/indra/newview/llviewerassetupload.cpp
@@ -97,6 +97,23 @@ LLResourceUploadInfo::LLResourceUploadInfo(std::string name,
mTransactionId.generate();
}
+LLResourceUploadInfo::LLResourceUploadInfo(LLAssetID assetId, LLAssetType::EType assetType, std::string name) :
+ mAssetId(assetId),
+ mAssetType(assetType),
+ mName(name),
+ mDescription(),
+ mCompressionInfo(0),
+ mDestinationFolderType(LLFolderType::FT_NONE),
+ mInventoryType(LLInventoryType::IT_NONE),
+ mNextOwnerPerms(0),
+ mGroupPerms(0),
+ mEveryonePerms(0),
+ mExpectedUploadCost(0),
+ mTransactionId(),
+ mFolderId(LLUUID::null),
+ mItemId(LLUUID::null)
+{
+}
LLSD LLResourceUploadInfo::prepareUpload()
{
@@ -320,8 +337,6 @@ LLNewFileResourceUploadInfo::LLNewFileResourceUploadInfo(
{
}
-
-
LLSD LLNewFileResourceUploadInfo::prepareUpload()
{
if (getAssetId().isNull())
@@ -471,7 +486,6 @@ LLBufferedAssetUploadInfo::LLBufferedAssetUploadInfo(LLUUID itemId, LLAssetType:
{
setItemId(itemId);
setAssetType(assetType);
-
}
LLBufferedAssetUploadInfo::LLBufferedAssetUploadInfo(LLUUID itemId, LLPointer<LLImageFormatted> image, invnUploadFinish_f finish) :
@@ -522,7 +536,6 @@ LLBufferedAssetUploadInfo::LLBufferedAssetUploadInfo(LLUUID taskId, LLUUID itemI
setAssetType(assetType);
}
-
LLSD LLBufferedAssetUploadInfo::prepareUpload()
{
if (getAssetId().isNull())
@@ -626,7 +639,6 @@ LLScriptAssetUpload::LLScriptAssetUpload(LLUUID taskId, LLUUID itemId, TargetTyp
{
}
-
LLSD LLScriptAssetUpload::generatePostBody()
{
LLSD body;
diff --git a/indra/newview/llviewerassetupload.h b/indra/newview/llviewerassetupload.h
index d41ba7f61b..43e23a0d42 100644
--- a/indra/newview/llviewerassetupload.h
+++ b/indra/newview/llviewerassetupload.h
@@ -99,6 +99,11 @@ protected:
U32 everyonePerms,
S32 expectedCost);
+ LLResourceUploadInfo(
+ LLAssetID assetId,
+ LLAssetType::EType assetType,
+ std::string name );
+
void setTransactionId(LLTransactionID tid) { mTransactionId = tid; }
void setAssetType(LLAssetType::EType assetType) { mAssetType = assetType; }
void setItemId(LLUUID itemId) { mItemId = itemId; }