summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xindra/newview/CMakeLists.txt2
-rwxr-xr-xindra/newview/llassetuploadresponders.cpp1153
-rwxr-xr-xindra/newview/llassetuploadresponders.h158
-rwxr-xr-xindra/newview/llcompilequeue.cpp1
-rwxr-xr-xindra/newview/llfloaterreporter.cpp1
-rwxr-xr-xindra/newview/llmeshrepository.cpp134
-rwxr-xr-xindra/newview/llpostcard.cpp1
-rwxr-xr-xindra/newview/llpreviewgesture.cpp1
-rwxr-xr-xindra/newview/llpreviewnotecard.cpp1
-rwxr-xr-xindra/newview/llpreviewscript.cpp1
-rwxr-xr-xindra/newview/llviewermenufile.cpp1
-rwxr-xr-xindra/newview/llviewermenufile.h10
12 files changed, 134 insertions, 1330 deletions
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index e79fa8b084..fd4f9f7f45 100755
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -123,7 +123,6 @@ set(viewer_SOURCE_FILES
llappearancemgr.cpp
llappviewer.cpp
llappviewerlistener.cpp
- llassetuploadresponders.cpp
llattachmentsmgr.cpp
llaudiosourcevo.cpp
llautoreplace.cpp
@@ -734,7 +733,6 @@ set(viewer_HEADER_FILES
llappearancemgr.h
llappviewer.h
llappviewerlistener.h
- llassetuploadresponders.h
llattachmentsmgr.h
llaudiosourcevo.h
llautoreplace.h
diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp
deleted file mode 100755
index f62c57b2b3..0000000000
--- a/indra/newview/llassetuploadresponders.cpp
+++ /dev/null
@@ -1,1153 +0,0 @@
-/**
- * @file llassetuploadresponders.cpp
- * @brief Processes responses received for asset upload requests.
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llassetuploadresponders.h"
-
-// viewer includes
-#include "llagent.h"
-#include "llcompilequeue.h"
-#include "llbuycurrencyhtml.h"
-#include "llfilepicker.h"
-#include "llinventorydefines.h"
-#include "llinventoryobserver.h"
-#include "llinventorypanel.h"
-#include "llpermissionsflags.h"
-#include "llpreviewnotecard.h"
-#include "llpreviewscript.h"
-#include "llpreviewgesture.h"
-#include "llgesturemgr.h"
-#include "llstatusbar.h" // sendMoneyBalanceRequest()
-#include "llsdserialize.h"
-#include "lluploaddialog.h"
-#include "llviewerobject.h"
-#include "llviewercontrol.h"
-#include "llviewerobjectlist.h"
-#include "llviewermenufile.h"
-#include "llviewertexlayer.h"
-#include "llviewerwindow.h"
-#include "lltrans.h"
-
-// library includes
-#include "lldir.h"
-#include "lleconomy.h"
-#include "llfloaterreg.h"
-#include "llfocusmgr.h"
-#include "llnotificationsutil.h"
-#include "llscrolllistctrl.h"
-#include "llsdserialize.h"
-#include "llsdutil.h"
-#include "llvfs.h"
-
-void dialog_refresh_all();
-
-void on_new_single_inventory_upload_complete(
- LLAssetType::EType asset_type,
- LLInventoryType::EType inventory_type,
- const std::string inventory_type_string,
- const LLUUID& item_folder_id,
- const std::string& item_name,
- const std::string& item_description,
- const LLSD& server_response,
- S32 upload_price)
-{
- bool success = false;
-
- if ( upload_price > 0 )
- {
- // this upload costed us L$, update our balance
- // and display something saying that it cost L$
- LLStatusBar::sendMoneyBalanceRequest();
-
- LLSD args;
- args["AMOUNT"] = llformat("%d", upload_price);
- LLNotificationsUtil::add("UploadPayment", args);
- }
-
- if( item_folder_id.notNull() )
- {
- U32 everyone_perms = PERM_NONE;
- U32 group_perms = PERM_NONE;
- U32 next_owner_perms = PERM_ALL;
- if( server_response.has("new_next_owner_mask") )
- {
- // The server provided creation perms so use them.
- // Do not assume we got the perms we asked for in
- // since the server may not have granted them all.
- everyone_perms = server_response["new_everyone_mask"].asInteger();
- group_perms = server_response["new_group_mask"].asInteger();
- next_owner_perms = server_response["new_next_owner_mask"].asInteger();
- }
- else
- {
- // The server doesn't provide creation perms
- // so use old assumption-based perms.
- if( inventory_type_string != "snapshot")
- {
- next_owner_perms = PERM_MOVE | PERM_TRANSFER;
- }
- }
-
- LLPermissions new_perms;
- new_perms.init(
- gAgent.getID(),
- gAgent.getID(),
- LLUUID::null,
- LLUUID::null);
-
- new_perms.initMasks(
- PERM_ALL,
- PERM_ALL,
- everyone_perms,
- group_perms,
- next_owner_perms);
-
- U32 inventory_item_flags = 0;
- if (server_response.has("inventory_flags"))
- {
- inventory_item_flags = (U32) server_response["inventory_flags"].asInteger();
- if (inventory_item_flags != 0)
- {
- LL_INFOS() << "inventory_item_flags " << inventory_item_flags << LL_ENDL;
- }
- }
- S32 creation_date_now = time_corrected();
- LLPointer<LLViewerInventoryItem> item = new LLViewerInventoryItem(
- server_response["new_inventory_item"].asUUID(),
- item_folder_id,
- new_perms,
- server_response["new_asset"].asUUID(),
- asset_type,
- inventory_type,
- item_name,
- item_description,
- LLSaleInfo::DEFAULT,
- inventory_item_flags,
- creation_date_now);
-
- gInventory.updateItem(item);
- gInventory.notifyObservers();
- success = true;
-
- // Show the preview panel for textures and sounds to let
- // user know that the image (or snapshot) arrived intact.
- LLInventoryPanel* panel = LLInventoryPanel::getActiveInventoryPanel();
- if ( panel )
- {
- LLFocusableElement* focus = gFocusMgr.getKeyboardFocus();
-
- panel->setSelection(
- server_response["new_inventory_item"].asUUID(),
- TAKE_FOCUS_NO);
-
- // restore keyboard focus
- gFocusMgr.setKeyboardFocus(focus);
- }
- }
- else
- {
- LL_WARNS() << "Can't find a folder to put it in" << LL_ENDL;
- }
-
- // remove the "Uploading..." message
- LLUploadDialog::modalUploadFinished();
-
- // Let the Snapshot floater know we have finished uploading a snapshot to inventory.
- LLFloater* floater_snapshot = LLFloaterReg::findInstance("snapshot");
- if (asset_type == LLAssetType::AT_TEXTURE && floater_snapshot)
- {
- floater_snapshot->notify(LLSD().with("set-finished", LLSD().with("ok", success).with("msg", "inventory")));
- }
-}
-
-LLAssetUploadResponder::LLAssetUploadResponder(const LLSD &post_data,
- const LLUUID& vfile_id,
- LLAssetType::EType asset_type)
- : LLHTTPClient::Responder(),
- mPostData(post_data),
- mVFileID(vfile_id),
- mAssetType(asset_type)
-{
- if (!gVFS->getExists(vfile_id, asset_type))
- {
- LL_WARNS() << "LLAssetUploadResponder called with nonexistant vfile_id" << LL_ENDL;
- mVFileID.setNull();
- mAssetType = LLAssetType::AT_NONE;
- return;
- }
-}
-
-LLAssetUploadResponder::LLAssetUploadResponder(
- const LLSD &post_data,
- const std::string& file_name,
- LLAssetType::EType asset_type)
- : LLHTTPClient::Responder(),
- mPostData(post_data),
- mFileName(file_name),
- mAssetType(asset_type)
-{
-}
-
-LLAssetUploadResponder::~LLAssetUploadResponder()
-{
- if (!mFileName.empty())
- {
- // Delete temp file
- LLFile::remove(mFileName);
- }
-}
-
-// virtual
-void LLAssetUploadResponder::httpFailure()
-{
- // *TODO: Add adaptive retry policy?
- LL_WARNS() << dumpResponse() << LL_ENDL;
- std::string reason;
- if (isHttpClientErrorStatus(getStatus()))
- {
- reason = "Error in upload request. Please visit "
- "http://secondlife.com/support for help fixing this problem.";
- }
- else
- {
- reason = "The server is experiencing unexpected "
- "difficulties.";
- }
- LLSD args;
- args["FILE"] = (mFileName.empty() ? mVFileID.asString() : mFileName);
- args["REASON"] = reason;
- LLNotificationsUtil::add("CannotUploadReason", args);
-
- // unfreeze script preview
- if(mAssetType == LLAssetType::AT_LSL_TEXT)
- {
- LLPreviewLSL* preview = LLFloaterReg::findTypedInstance<LLPreviewLSL>("preview_script", mPostData["item_id"]);
- if (preview)
- {
- LLSD errors;
- errors.append(LLTrans::getString("UploadFailed") + reason);
- preview->callbackLSLCompileFailed(errors);
- }
- }
-
- LLUploadDialog::modalUploadFinished();
- LLFilePicker::instance().reset(); // unlock file picker when bulk upload fails
-}
-
-//virtual
-void LLAssetUploadResponder::httpSuccess()
-{
- const LLSD& content = getContent();
- if (!content.isMap())
- {
- failureResult(HTTP_INTERNAL_ERROR, "Malformed response contents", content);
- return;
- }
- LL_DEBUGS() << "LLAssetUploadResponder::result from capabilities" << LL_ENDL;
-
- const std::string& state = content["state"].asStringRef();
-
- if (state == "upload")
- {
- uploadUpload(content);
- }
- else if (state == "complete")
- {
- // rename file in VFS with new asset id
- if (mFileName.empty())
- {
- // rename the file in the VFS to the actual asset id
- // LL_INFOS() << "Changing uploaded asset UUID to " << content["new_asset"].asUUID() << LL_ENDL;
- gVFS->renameFile(mVFileID, mAssetType, content["new_asset"].asUUID(), mAssetType);
- }
- uploadComplete(content);
- }
- else
- {
- uploadFailure(content);
- }
-}
-
-void LLAssetUploadResponder::uploadUpload(const LLSD& content)
-{
- const std::string& uploader = content["uploader"].asStringRef();
- if (mFileName.empty())
- {
- LLHTTPClient::postFile(uploader, mVFileID, mAssetType, this);
- }
- else
- {
- LLHTTPClient::postFile(uploader, mFileName, this);
- }
-}
-
-void LLAssetUploadResponder::uploadFailure(const LLSD& content)
-{
- LL_WARNS() << dumpResponse() << LL_ENDL;
-
- // unfreeze script preview
- if(mAssetType == LLAssetType::AT_LSL_TEXT)
- {
- LLPreviewLSL* preview = LLFloaterReg::findTypedInstance<LLPreviewLSL>("preview_script", mPostData["item_id"]);
- if (preview)
- {
- LLSD errors;
- errors.append(LLTrans::getString("UploadFailed") + content["message"].asString());
- preview->callbackLSLCompileFailed(errors);
- }
- }
-
- // remove the "Uploading..." message
- LLUploadDialog::modalUploadFinished();
-
- LLFloater* floater_snapshot = LLFloaterReg::findInstance("snapshot");
- if (floater_snapshot)
- {
- floater_snapshot->notify(LLSD().with("set-finished", LLSD().with("ok", false).with("msg", "inventory")));
- }
-
- const std::string& reason = content["state"].asStringRef();
- // deal with L$ errors
- if (reason == "insufficient funds")
- {
- S32 price = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload();
- LLStringUtil::format_map_t args;
- args["AMOUNT"] = llformat("%d", price);
- LLBuyCurrencyHTML::openCurrencyFloater( LLTrans::getString("uploading_costs", args), price );
- }
- else
- {
- LLSD args;
- args["FILE"] = (mFileName.empty() ? mVFileID.asString() : mFileName);
- args["REASON"] = content["message"].asString();
- LLNotificationsUtil::add("CannotUploadReason", args);
- }
-}
-
-void LLAssetUploadResponder::uploadComplete(const LLSD& content)
-{
-}
-
-#if 0
-LLNewAgentInventoryResponder::LLNewAgentInventoryResponder(
- const LLSD& post_data,
- const LLUUID& vfile_id,
- LLAssetType::EType asset_type)
- : LLAssetUploadResponder(post_data, vfile_id, asset_type)
-{
-}
-
-LLNewAgentInventoryResponder::LLNewAgentInventoryResponder(
- const LLSD& post_data,
- const std::string& file_name,
- LLAssetType::EType asset_type)
- : LLAssetUploadResponder(post_data, file_name, asset_type)
-{
-}
-
-// virtual
-void LLNewAgentInventoryResponder::httpFailure()
-{
- LLAssetUploadResponder::httpFailure();
- //LLImportColladaAssetCache::getInstance()->assetUploaded(mVFileID, LLUUID(), FALSE);
-}
-
-
-//virtual
-void LLNewAgentInventoryResponder::uploadFailure(const LLSD& content)
-{
- LLAssetUploadResponder::uploadFailure(content);
-
- //LLImportColladaAssetCache::getInstance()->assetUploaded(mVFileID, content["new_asset"], FALSE);
-}
-
-//virtual
-void LLNewAgentInventoryResponder::uploadComplete(const LLSD& content)
-{
- LL_DEBUGS() << "LLNewAgentInventoryResponder::result from capabilities" << LL_ENDL;
-
- //std::ostringstream llsdxml;
- //LLSDSerialize::toXML(content, llsdxml);
- //LL_INFOS() << "upload complete content:\n " << llsdxml.str() << LL_ENDL;
-
- LLAssetType::EType asset_type = LLAssetType::lookup(mPostData["asset_type"].asString());
- LLInventoryType::EType inventory_type = LLInventoryType::lookup(mPostData["inventory_type"].asString());
- S32 expected_upload_cost = 0;
-
- // Update L$ and ownership credit information
- // since it probably changed on the server
- if (asset_type == LLAssetType::AT_TEXTURE ||
- asset_type == LLAssetType::AT_SOUND ||
- asset_type == LLAssetType::AT_ANIMATION ||
- asset_type == LLAssetType::AT_MESH)
- {
- expected_upload_cost =
- LLGlobalEconomy::Singleton::getInstance()->getPriceUpload();
- }
-
- on_new_single_inventory_upload_complete(
- asset_type,
- inventory_type,
- mPostData["asset_type"].asString(),
- mPostData["folder_id"].asUUID(),
- mPostData["name"],
- mPostData["description"],
- content,
- expected_upload_cost);
-
- // continue uploading for bulk uploads
-
- // *FIX: This is a pretty big hack. What this does is check the
- // file picker if there are any more pending uploads. If so,
- // upload that file.
- std::string next_file = LLFilePicker::instance().getNextFile();
- if(!next_file.empty())
- {
- std::string name = gDirUtilp->getBaseFileName(next_file, true);
-
- std::string asset_name = name;
- LLStringUtil::replaceNonstandardASCII( asset_name, '?' );
- LLStringUtil::replaceChar(asset_name, '|', '?');
- LLStringUtil::stripNonprintable(asset_name);
- LLStringUtil::trim(asset_name);
-
- // Continuing the horrible hack above, we need to extract the originally requested permissions data, if any,
- // and use them for each next file to be uploaded. Note the requested perms are not the same as the
- U32 everyone_perms =
- content.has("new_everyone_mask") ?
- content["new_everyone_mask"].asInteger() :
- PERM_NONE;
-
- U32 group_perms =
- content.has("new_group_mask") ?
- content["new_group_mask"].asInteger() :
- PERM_NONE;
-
- U32 next_owner_perms =
- content.has("new_next_owner_mask") ?
- content["new_next_owner_mask"].asInteger() :
- PERM_NONE;
-
- std::string display_name = LLStringUtil::null;
- LLAssetStorage::LLStoreAssetCallback callback = NULL;
- void *userdata = NULL;
-
- upload_new_resource(
- next_file,
- asset_name,
- asset_name,
- 0,
- LLFolderType::FT_NONE,
- LLInventoryType::IT_NONE,
- next_owner_perms,
- group_perms,
- everyone_perms,
- display_name,
- callback,
- LLGlobalEconomy::Singleton::getInstance()->getPriceUpload(),
- userdata);
- }
-
- //LLImportColladaAssetCache::getInstance()->assetUploaded(mVFileID, content["new_asset"], TRUE);
-}
-#endif
-
-#if 0
-LLUpdateAgentInventoryResponder::LLUpdateAgentInventoryResponder(
- const LLSD& post_data,
- const LLUUID& vfile_id,
- LLAssetType::EType asset_type)
- : LLAssetUploadResponder(post_data, vfile_id, asset_type)
-{
-}
-
-LLUpdateAgentInventoryResponder::LLUpdateAgentInventoryResponder(
- const LLSD& post_data,
- const std::string& file_name,
- LLAssetType::EType asset_type)
- : LLAssetUploadResponder(post_data, file_name, asset_type)
-{
-}
-
-//virtual
-void LLUpdateAgentInventoryResponder::uploadComplete(const LLSD& content)
-{
- LL_INFOS() << "LLUpdateAgentInventoryResponder::result from capabilities" << LL_ENDL;
- LLUUID item_id = mPostData["item_id"];
-
- LLViewerInventoryItem* item = (LLViewerInventoryItem*)gInventory.getItem(item_id);
- if(!item)
- {
- LL_WARNS() << "Inventory item for " << mVFileID
- << " is no longer in agent inventory." << LL_ENDL;
- return;
- }
-
- // Update viewer inventory item
- LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item);
- new_item->setAssetUUID(content["new_asset"].asUUID());
- gInventory.updateItem(new_item);
- gInventory.notifyObservers();
-
- LL_INFOS() << "Inventory item " << item->getName() << " saved into "
- << content["new_asset"].asString() << LL_ENDL;
-
- LLInventoryType::EType inventory_type = new_item->getInventoryType();
- switch(inventory_type)
- {
- case LLInventoryType::IT_NOTECARD:
- {
- // Update the UI with the new asset.
- LLPreviewNotecard* nc = LLFloaterReg::findTypedInstance<LLPreviewNotecard>("preview_notecard", LLSD(item_id));
- if(nc)
- {
- // *HACK: we have to delete the asset in the VFS so
- // that the viewer will redownload it. This is only
- // really necessary if the asset had to be modified by
- // the uploader, so this can be optimized away in some
- // cases. A better design is to have a new uuid if the
- // script actually changed the asset.
- if(nc->hasEmbeddedInventory())
- {
- gVFS->removeFile(content["new_asset"].asUUID(), LLAssetType::AT_NOTECARD);
- }
- nc->refreshFromInventory(new_item->getUUID());
- }
- break;
- }
- case LLInventoryType::IT_LSL:
- {
- // Find our window and close it if requested.
- LLPreviewLSL* preview = LLFloaterReg::findTypedInstance<LLPreviewLSL>("preview_script", LLSD(item_id));
- if (preview)
- {
- // Bytecode save completed
- if (content["compiled"])
- {
- preview->callbackLSLCompileSucceeded();
- }
- else
- {
- preview->callbackLSLCompileFailed(content["errors"]);
- }
- }
- break;
- }
-
- case LLInventoryType::IT_GESTURE:
- {
- // If this gesture is active, then we need to update the in-memory
- // active map with the new pointer.
- if (LLGestureMgr::instance().isGestureActive(item_id))
- {
- LLUUID asset_id = new_item->getAssetUUID();
- LLGestureMgr::instance().replaceGesture(item_id, asset_id);
- gInventory.notifyObservers();
- }
-
- //gesture will have a new asset_id
- LLPreviewGesture* previewp = LLFloaterReg::findTypedInstance<LLPreviewGesture>("preview_gesture", LLSD(item_id));
- if(previewp)
- {
- previewp->onUpdateSucceeded();
- }
-
- break;
- }
- case LLInventoryType::IT_WEARABLE:
- default:
- break;
- }
-}
-#endif
-
-#if 0
-LLUpdateTaskInventoryResponder::LLUpdateTaskInventoryResponder(const LLSD& post_data,
- const LLUUID& vfile_id,
- LLAssetType::EType asset_type)
-: LLAssetUploadResponder(post_data, vfile_id, asset_type)
-{
-}
-
-LLUpdateTaskInventoryResponder::LLUpdateTaskInventoryResponder(const LLSD& post_data,
- const std::string& file_name,
- LLAssetType::EType asset_type)
-: LLAssetUploadResponder(post_data, file_name, asset_type)
-{
-}
-
-LLUpdateTaskInventoryResponder::LLUpdateTaskInventoryResponder(const LLSD& post_data,
- const std::string& file_name,
- const LLUUID& queue_id,
- LLAssetType::EType asset_type)
-: LLAssetUploadResponder(post_data, file_name, asset_type), mQueueId(queue_id)
-{
-}
-
-//virtual
-void LLUpdateTaskInventoryResponder::uploadComplete(const LLSD& content)
-{
- LL_INFOS() << "LLUpdateTaskInventoryResponder::result from capabilities" << LL_ENDL;
- LLUUID item_id = mPostData["item_id"];
- LLUUID task_id = mPostData["task_id"];
-
- dialog_refresh_all();
-
- switch(mAssetType)
- {
- case LLAssetType::AT_NOTECARD:
- {
- // Update the UI with the new asset.
- LLPreviewNotecard* nc = LLFloaterReg::findTypedInstance<LLPreviewNotecard>("preview_notecard", LLSD(item_id));
- if(nc)
- {
- // *HACK: we have to delete the asset in the VFS so
- // that the viewer will redownload it. This is only
- // really necessary if the asset had to be modified by
- // the uploader, so this can be optimized away in some
- // cases. A better design is to have a new uuid if the
- // script actually changed the asset.
- if(nc->hasEmbeddedInventory())
- {
- gVFS->removeFile(content["new_asset"].asUUID(),
- LLAssetType::AT_NOTECARD);
- }
- nc->setAssetId(content["new_asset"].asUUID());
- nc->refreshFromInventory();
- }
- break;
- }
- case LLAssetType::AT_LSL_TEXT:
- {
- if(mQueueId.notNull())
- {
- LLFloaterCompileQueue* queue = LLFloaterReg::findTypedInstance<LLFloaterCompileQueue>("compile_queue", mQueueId);
- if(NULL != queue)
- {
- queue->removeItemByItemID(item_id);
- }
- }
- else
- {
- LLSD floater_key;
- floater_key["taskid"] = task_id;
- floater_key["itemid"] = item_id;
- LLLiveLSLEditor* preview = LLFloaterReg::findTypedInstance<LLLiveLSLEditor>("preview_scriptedit", floater_key);
- if (preview)
- {
- // Bytecode save completed
- if (content["compiled"])
- {
- preview->callbackLSLCompileSucceeded(task_id, item_id, mPostData["is_script_running"]);
- }
- else
- {
- preview->callbackLSLCompileFailed(content["errors"]);
- }
- }
- }
- break;
- }
- default:
- break;
- }
-}
-#endif
-
-#if 0
-/////////////////////////////////////////////////////
-// LLNewAgentInventoryVariablePriceResponder::Impl //
-/////////////////////////////////////////////////////
-class LLNewAgentInventoryVariablePriceResponder::Impl
-{
-public:
- Impl(
- const LLUUID& vfile_id,
- LLAssetType::EType asset_type,
- const LLSD& inventory_data) :
- mVFileID(vfile_id),
- mAssetType(asset_type),
- mInventoryData(inventory_data),
- mFileName("")
- {
- if (!gVFS->getExists(vfile_id, asset_type))
- {
- LL_WARNS()
- << "LLAssetUploadResponder called with nonexistant "
- << "vfile_id " << vfile_id << LL_ENDL;
- mVFileID.setNull();
- mAssetType = LLAssetType::AT_NONE;
- }
- }
-
- Impl(
- const std::string& file_name,
- LLAssetType::EType asset_type,
- const LLSD& inventory_data) :
- mFileName(file_name),
- mAssetType(asset_type),
- mInventoryData(inventory_data)
- {
- mVFileID.setNull();
- }
-
- std::string getFilenameOrIDString() const
- {
- return (mFileName.empty() ? mVFileID.asString() : mFileName);
- }
-
- LLUUID getVFileID() const
- {
- return mVFileID;
- }
-
- std::string getFilename() const
- {
- return mFileName;
- }
-
- LLAssetType::EType getAssetType() const
- {
- return mAssetType;
- }
-
- LLInventoryType::EType getInventoryType() const
- {
- return LLInventoryType::lookup(
- mInventoryData["inventory_type"].asString());
- }
-
- std::string getInventoryTypeString() const
- {
- return mInventoryData["inventory_type"].asString();
- }
-
- LLUUID getFolderID() const
- {
- return mInventoryData["folder_id"].asUUID();
- }
-
- std::string getItemName() const
- {
- return mInventoryData["name"].asString();
- }
-
- std::string getItemDescription() const
- {
- return mInventoryData["description"].asString();
- }
-
- void displayCannotUploadReason(const std::string& reason)
- {
- LLSD args;
- args["FILE"] = getFilenameOrIDString();
- args["REASON"] = reason;
-
-
- LLNotificationsUtil::add("CannotUploadReason", args);
- LLUploadDialog::modalUploadFinished();
- }
-
- void onApplicationLevelError(const LLSD& error)
- {
- static const std::string _IDENTIFIER = "identifier";
-
- static const std::string _INSUFFICIENT_FUNDS =
- "NewAgentInventory_InsufficientLindenDollarBalance";
- static const std::string _MISSING_REQUIRED_PARAMETER =
- "NewAgentInventory_MissingRequiredParamater";
- static const std::string _INVALID_REQUEST_BODY =
- "NewAgentInventory_InvalidRequestBody";
- static const std::string _RESOURCE_COST_DIFFERS =
- "NewAgentInventory_ResourceCostDiffers";
-
- static const std::string _MISSING_PARAMETER = "missing_parameter";
- static const std::string _INVALID_PARAMETER = "invalid_parameter";
- static const std::string _MISSING_RESOURCE = "missing_resource";
- static const std::string _INVALID_RESOURCE = "invalid_resource";
-
- // TODO* Add the other error_identifiers
-
- std::string error_identifier = error[_IDENTIFIER].asString();
-
- // TODO*: Pull these user visible strings from an xml file
- // to be localized
- if ( _INSUFFICIENT_FUNDS == error_identifier )
- {
- displayCannotUploadReason("You do not have a sufficient L$ balance to complete this upload.");
- }
- else if ( _MISSING_REQUIRED_PARAMETER == error_identifier )
- {
- // Missing parameters
- if (error.has(_MISSING_PARAMETER) )
- {
- std::string message =
- "Upload request was missing required parameter '[P]'";
- LLStringUtil::replaceString(
- message,
- "[P]",
- error[_MISSING_PARAMETER].asString());
-
- displayCannotUploadReason(message);
- }
- else
- {
- std::string message =
- "Upload request was missing a required parameter";
- displayCannotUploadReason(message);
- }
- }
- else if ( _INVALID_REQUEST_BODY == error_identifier )
- {
- // Invalid request body, check to see if
- // a particular parameter was invalid
- if ( error.has(_INVALID_PARAMETER) )
- {
- std::string message = "Upload parameter '[P]' is invalid.";
- LLStringUtil::replaceString(
- message,
- "[P]",
- error[_INVALID_PARAMETER].asString());
-
- // See if the server also responds with what resource
- // is missing.
- if ( error.has(_MISSING_RESOURCE) )
- {
- message += "\nMissing resource '[R]'.";
-
- LLStringUtil::replaceString(
- message,
- "[R]",
- error[_MISSING_RESOURCE].asString());
- }
- else if ( error.has(_INVALID_RESOURCE) )
- {
- message += "\nInvalid resource '[R]'.";
-
- LLStringUtil::replaceString(
- message,
- "[R]",
- error[_INVALID_RESOURCE].asString());
- }
-
- displayCannotUploadReason(message);
- }
- else
- {
- std::string message = "Upload request was malformed";
- displayCannotUploadReason(message);
- }
- }
- else if ( _RESOURCE_COST_DIFFERS == error_identifier )
- {
- displayCannotUploadReason("The resource cost associated with this upload is not consistent with the server.");
- }
- else
- {
- displayCannotUploadReason("Unknown Error");
- }
- }
-
- void onTransportError()
- {
- displayCannotUploadReason(
- "The server is experiencing unexpected difficulties.");
- }
-
- void onTransportError(const LLSD& error)
- {
- static const std::string _IDENTIFIER = "identifier";
-
- static const std::string _SERVER_ERROR_AFTER_CHARGE =
- "NewAgentInventory_ServerErrorAfterCharge";
-
- std::string error_identifier = error[_IDENTIFIER].asString();
-
- // TODO*: Pull the user visible strings from an xml file
- // to be localized
-
- if ( _SERVER_ERROR_AFTER_CHARGE == error_identifier )
- {
- displayCannotUploadReason(
- "The server is experiencing unexpected difficulties. You may have been charged for the upload.");
- }
- else
- {
- displayCannotUploadReason(
- "The server is experiencing unexpected difficulties.");
- }
- }
-
- bool uploadConfirmationCallback(
- const LLSD& notification,
- const LLSD& response,
- LLPointer<LLNewAgentInventoryVariablePriceResponder> responder)
- {
- S32 option;
- std::string confirmation_url;
-
- option = LLNotificationsUtil::getSelectedOption(
- notification,
- response);
-
- confirmation_url =
- notification["payload"]["confirmation_url"].asString();
-
- // Yay! We are confirming or cancelling our upload
- switch(option)
- {
- case 0:
- {
- confirmUpload(confirmation_url, responder);
- }
- break;
- case 1:
- default:
- break;
- }
-
- return false;
- }
-
- void confirmUpload(
- const std::string& confirmation_url,
- LLPointer<LLNewAgentInventoryVariablePriceResponder> responder)
- {
- if ( getFilename().empty() )
- {
- // we have no filename, use virtual file ID instead
- LLHTTPClient::postFile(
- confirmation_url,
- getVFileID(),
- getAssetType(),
- responder);
- }
- else
- {
- LLHTTPClient::postFile(
- confirmation_url,
- getFilename(),
- responder);
- }
- }
-
-
-private:
- std::string mFileName;
-
- LLSD mInventoryData;
- LLAssetType::EType mAssetType;
- LLUUID mVFileID;
-};
-
-///////////////////////////////////////////////
-// LLNewAgentInventoryVariablePriceResponder //
-///////////////////////////////////////////////
-LLNewAgentInventoryVariablePriceResponder::LLNewAgentInventoryVariablePriceResponder(
- const LLUUID& vfile_id,
- LLAssetType::EType asset_type,
- const LLSD& inventory_info)
-{
- mImpl = new Impl(
- vfile_id,
- asset_type,
- inventory_info);
-}
-
-LLNewAgentInventoryVariablePriceResponder::LLNewAgentInventoryVariablePriceResponder(
- const std::string& file_name,
- LLAssetType::EType asset_type,
- const LLSD& inventory_info)
-{
- mImpl = new Impl(
- file_name,
- asset_type,
- inventory_info);
-}
-
-LLNewAgentInventoryVariablePriceResponder::~LLNewAgentInventoryVariablePriceResponder()
-{
- delete mImpl;
-}
-
-void LLNewAgentInventoryVariablePriceResponder::httpFailure()
-{
- const LLSD& content = getContent();
- LL_WARNS("Upload") << dumpResponse() << LL_ENDL;
-
- static const std::string _ERROR = "error";
- if ( content.has(_ERROR) )
- {
- mImpl->onTransportError(content[_ERROR]);
- }
- else
- {
- mImpl->onTransportError();
- }
-}
-
-void LLNewAgentInventoryVariablePriceResponder::httpSuccess()
-{
- const LLSD& content = getContent();
- if (!content.isMap())
- {
- failureResult(HTTP_INTERNAL_ERROR, "Malformed response contents", content);
- return;
- }
- // Parse out application level errors and the appropriate
- // responses for them
- static const std::string _ERROR = "error";
- static const std::string _STATE = "state";
-
- static const std::string _COMPLETE = "complete";
- static const std::string _CONFIRM_UPLOAD = "confirm_upload";
-
- static const std::string _UPLOAD_PRICE = "upload_price";
- static const std::string _RESOURCE_COST = "resource_cost";
- static const std::string _RSVP = "rsvp";
-
- // Check for application level errors
- if ( content.has(_ERROR) )
- {
- LL_WARNS("Upload") << dumpResponse() << LL_ENDL;
- onApplicationLevelError(content[_ERROR]);
- return;
- }
-
- std::string state = content[_STATE];
- LLAssetType::EType asset_type = mImpl->getAssetType();
-
- if ( _COMPLETE == state )
- {
- // rename file in VFS with new asset id
- if (mImpl->getFilename().empty())
- {
- // rename the file in the VFS to the actual asset id
- // LL_INFOS() << "Changing uploaded asset UUID to " << content["new_asset"].asUUID() << LL_ENDL;
- gVFS->renameFile(
- mImpl->getVFileID(),
- asset_type,
- content["new_asset"].asUUID(),
- asset_type);
- }
-
- on_new_single_inventory_upload_complete(
- asset_type,
- mImpl->getInventoryType(),
- mImpl->getInventoryTypeString(),
- mImpl->getFolderID(),
- mImpl->getItemName(),
- mImpl->getItemDescription(),
- content,
- content[_UPLOAD_PRICE].asInteger());
-
- // TODO* Add bulk (serial) uploading or add
- // a super class of this that does so
- }
- else if ( _CONFIRM_UPLOAD == state )
- {
- showConfirmationDialog(
- content[_UPLOAD_PRICE].asInteger(),
- content[_RESOURCE_COST].asInteger(),
- content[_RSVP].asString());
- }
- else
- {
- LL_WARNS("Upload") << dumpResponse() << LL_ENDL;
- onApplicationLevelError("");
- }
-}
-
-void LLNewAgentInventoryVariablePriceResponder::onApplicationLevelError(
- const LLSD& error)
-{
- mImpl->onApplicationLevelError(error);
-}
-
-void LLNewAgentInventoryVariablePriceResponder::showConfirmationDialog(
- S32 upload_price,
- S32 resource_cost,
- const std::string& confirmation_url)
-{
- if ( 0 == upload_price )
- {
- // don't show confirmation dialog for free uploads, I mean,
- // they're free!
-
- // The creating of a new instrusive_ptr(this)
- // creates a new boost::intrusive_ptr
- // which is a copy of this. This code is required because
- // 'this' is always of type Class* and not the intrusive_ptr,
- // and thus, a reference to 'this' is not registered
- // by using just plain 'this'.
-
- // Since LLNewAgentInventoryVariablePriceResponder is a
- // reference counted class, it is possible (since the
- // reference to a plain 'this' would be missed here) that,
- // when using plain ol' 'this', that this object
- // would be deleted before the callback is triggered
- // and cause sadness.
- mImpl->confirmUpload(
- confirmation_url,
- LLPointer<LLNewAgentInventoryVariablePriceResponder>(this));
- }
- else
- {
- LLSD substitutions;
- LLSD payload;
-
- substitutions["PRICE"] = upload_price;
-
- payload["confirmation_url"] = confirmation_url;
-
- // The creating of a new instrusive_ptr(this)
- // creates a new boost::intrusive_ptr
- // which is a copy of this. This code is required because
- // 'this' is always of type Class* and not the intrusive_ptr,
- // and thus, a reference to 'this' is not registered
- // by using just plain 'this'.
-
- // Since LLNewAgentInventoryVariablePriceResponder is a
- // reference counted class, it is possible (since the
- // reference to a plain 'this' would be missed here) that,
- // when using plain ol' 'this', that this object
- // would be deleted before the callback is triggered
- // and cause sadness.
- LLNotificationsUtil::add(
- "UploadCostConfirmation",
- substitutions,
- payload,
- boost::bind(
- &LLNewAgentInventoryVariablePriceResponder::Impl::uploadConfirmationCallback,
- mImpl,
- _1,
- _2,
- LLPointer<LLNewAgentInventoryVariablePriceResponder>(this)));
- }
-}
-#endif
-
diff --git a/indra/newview/llassetuploadresponders.h b/indra/newview/llassetuploadresponders.h
deleted file mode 100755
index d3457ce450..0000000000
--- a/indra/newview/llassetuploadresponders.h
+++ /dev/null
@@ -1,158 +0,0 @@
-/**
- * @file llassetuploadresponders.h
- * @brief Processes responses received for asset upload requests.
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLASSETUPLOADRESPONDER_H
-#define LL_LLASSETUPLOADRESPONDER_H
-
-#include "llhttpclient.h"
-
-// Abstract class for supporting asset upload
-// via capabilities
-class LLAssetUploadResponder : public LLHTTPClient::Responder
-{
-protected:
- LOG_CLASS(LLAssetUploadResponder);
-public:
- LLAssetUploadResponder(const LLSD& post_data,
- const LLUUID& vfile_id,
- LLAssetType::EType asset_type);
- LLAssetUploadResponder(const LLSD& post_data,
- const std::string& file_name,
- LLAssetType::EType asset_type);
- ~LLAssetUploadResponder();
-
-protected:
- virtual void httpFailure();
- virtual void httpSuccess();
-
-public:
- virtual void uploadUpload(const LLSD& content);
- virtual void uploadComplete(const LLSD& content);
- virtual void uploadFailure(const LLSD& content);
-
-protected:
- LLSD mPostData;
- LLAssetType::EType mAssetType;
- LLUUID mVFileID;
- std::string mFileName;
-};
-
-#if 0
-// TODO*: Remove this once deprecated
-class LLNewAgentInventoryResponder : public LLAssetUploadResponder
-{
- LOG_CLASS(LLNewAgentInventoryResponder);
-public:
- LLNewAgentInventoryResponder(
- const LLSD& post_data,
- const LLUUID& vfile_id,
- LLAssetType::EType asset_type);
- LLNewAgentInventoryResponder(
- const LLSD& post_data,
- const std::string& file_name,
- LLAssetType::EType asset_type);
- virtual void uploadComplete(const LLSD& content);
- virtual void uploadFailure(const LLSD& content);
-protected:
- virtual void httpFailure();
-};
-#endif
-#if 0
-// A base class which goes through and performs some default
-// actions for variable price uploads. If more specific actions
-// are needed (such as different confirmation messages, etc.)
-// the functions onApplicationLevelError and showConfirmationDialog.
-class LLNewAgentInventoryVariablePriceResponder :
- public LLHTTPClient::Responder
-{
- LOG_CLASS(LLNewAgentInventoryVariablePriceResponder);
-public:
- LLNewAgentInventoryVariablePriceResponder(
- const LLUUID& vfile_id,
- LLAssetType::EType asset_type,
- const LLSD& inventory_info);
-
- LLNewAgentInventoryVariablePriceResponder(
- const std::string& file_name,
- LLAssetType::EType asset_type,
- const LLSD& inventory_info);
- virtual ~LLNewAgentInventoryVariablePriceResponder();
-
-private:
- /* virtual */ void httpFailure();
- /* virtual */ void httpSuccess();
-
-public:
- virtual void onApplicationLevelError(
- const LLSD& error);
- virtual void showConfirmationDialog(
- S32 upload_price,
- S32 resource_cost,
- const std::string& confirmation_url);
-
-private:
- class Impl;
- Impl* mImpl;
-};
-#endif
-
-#if 0
-class LLUpdateAgentInventoryResponder : public LLAssetUploadResponder
-{
-public:
- LLUpdateAgentInventoryResponder(const LLSD& post_data,
- const LLUUID& vfile_id,
- LLAssetType::EType asset_type);
- LLUpdateAgentInventoryResponder(const LLSD& post_data,
- const std::string& file_name,
- LLAssetType::EType asset_type);
- virtual void uploadComplete(const LLSD& content);
-};
-#endif
-
-#if 0
-class LLUpdateTaskInventoryResponder : public LLAssetUploadResponder
-{
-public:
- LLUpdateTaskInventoryResponder(const LLSD& post_data,
- const LLUUID& vfile_id,
- LLAssetType::EType asset_type);
- LLUpdateTaskInventoryResponder(const LLSD& post_data,
- const std::string& file_name,
- LLAssetType::EType asset_type);
- LLUpdateTaskInventoryResponder(const LLSD& post_data,
- const std::string& file_name,
- const LLUUID& queue_id,
- LLAssetType::EType asset_type);
-
- virtual void uploadComplete(const LLSD& content);
-
-private:
- LLUUID mQueueId;
-};
-#endif
-
-#endif // LL_LLASSETUPLOADRESPONDER_H
diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp
index c4b0b96d4c..24e662ee50 100755
--- a/indra/newview/llcompilequeue.cpp
+++ b/indra/newview/llcompilequeue.cpp
@@ -37,7 +37,6 @@
#include "llcompilequeue.h"
#include "llagent.h"
-#include "llassetuploadresponders.h"
#include "llchat.h"
#include "llfloaterreg.h"
#include "llviewerwindow.h"
diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp
index b38362e180..d8f5f27681 100755
--- a/indra/newview/llfloaterreporter.cpp
+++ b/indra/newview/llfloaterreporter.cpp
@@ -77,7 +77,6 @@
#include "lluictrlfactory.h"
#include "llviewernetwork.h"
-#include "llassetuploadresponders.h"
#include "llagentui.h"
#include "lltrans.h"
diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp
index d6aaf18cb7..c34d04c98e 100755
--- a/indra/newview/llmeshrepository.cpp
+++ b/indra/newview/llmeshrepository.cpp
@@ -72,6 +72,10 @@
#include "bufferstream.h"
#include "llfasttimer.h"
#include "llcorehttputil.h"
+#include "llstatusbar.h"
+#include "llinventorypanel.h"
+#include "lluploaddialog.h"
+#include "llfloaterreg.h"
#include "boost/lexical_cast.hpp"
@@ -412,6 +416,17 @@ static unsigned int metrics_teleport_start_count = 0;
boost::signals2::connection metrics_teleport_started_signal;
static void teleport_started();
+void on_new_single_inventory_upload_complete(
+ LLAssetType::EType asset_type,
+ LLInventoryType::EType inventory_type,
+ const std::string inventory_type_string,
+ const LLUUID& item_folder_id,
+ const std::string& item_name,
+ const std::string& item_description,
+ const LLSD& server_response,
+ S32 upload_price);
+
+
//get the number of bytes resident in memory for given volume
U32 get_volume_memory_size(const LLVolume* volume)
{
@@ -4567,3 +4582,122 @@ void teleport_started()
LLMeshRepository::metricsStart();
}
+
+void on_new_single_inventory_upload_complete(
+ LLAssetType::EType asset_type,
+ LLInventoryType::EType inventory_type,
+ const std::string inventory_type_string,
+ const LLUUID& item_folder_id,
+ const std::string& item_name,
+ const std::string& item_description,
+ const LLSD& server_response,
+ S32 upload_price)
+{
+ bool success = false;
+
+ if (upload_price > 0)
+ {
+ // this upload costed us L$, update our balance
+ // and display something saying that it cost L$
+ LLStatusBar::sendMoneyBalanceRequest();
+
+ LLSD args;
+ args["AMOUNT"] = llformat("%d", upload_price);
+ LLNotificationsUtil::add("UploadPayment", args);
+ }
+
+ if (item_folder_id.notNull())
+ {
+ U32 everyone_perms = PERM_NONE;
+ U32 group_perms = PERM_NONE;
+ U32 next_owner_perms = PERM_ALL;
+ if (server_response.has("new_next_owner_mask"))
+ {
+ // The server provided creation perms so use them.
+ // Do not assume we got the perms we asked for in
+ // since the server may not have granted them all.
+ everyone_perms = server_response["new_everyone_mask"].asInteger();
+ group_perms = server_response["new_group_mask"].asInteger();
+ next_owner_perms = server_response["new_next_owner_mask"].asInteger();
+ }
+ else
+ {
+ // The server doesn't provide creation perms
+ // so use old assumption-based perms.
+ if (inventory_type_string != "snapshot")
+ {
+ next_owner_perms = PERM_MOVE | PERM_TRANSFER;
+ }
+ }
+
+ LLPermissions new_perms;
+ new_perms.init(
+ gAgent.getID(),
+ gAgent.getID(),
+ LLUUID::null,
+ LLUUID::null);
+
+ new_perms.initMasks(
+ PERM_ALL,
+ PERM_ALL,
+ everyone_perms,
+ group_perms,
+ next_owner_perms);
+
+ U32 inventory_item_flags = 0;
+ if (server_response.has("inventory_flags"))
+ {
+ inventory_item_flags = (U32)server_response["inventory_flags"].asInteger();
+ if (inventory_item_flags != 0)
+ {
+ LL_INFOS() << "inventory_item_flags " << inventory_item_flags << LL_ENDL;
+ }
+ }
+ S32 creation_date_now = time_corrected();
+ LLPointer<LLViewerInventoryItem> item = new LLViewerInventoryItem(
+ server_response["new_inventory_item"].asUUID(),
+ item_folder_id,
+ new_perms,
+ server_response["new_asset"].asUUID(),
+ asset_type,
+ inventory_type,
+ item_name,
+ item_description,
+ LLSaleInfo::DEFAULT,
+ inventory_item_flags,
+ creation_date_now);
+
+ gInventory.updateItem(item);
+ gInventory.notifyObservers();
+ success = true;
+
+ // Show the preview panel for textures and sounds to let
+ // user know that the image (or snapshot) arrived intact.
+ LLInventoryPanel* panel = LLInventoryPanel::getActiveInventoryPanel();
+ if (panel)
+ {
+ LLFocusableElement* focus = gFocusMgr.getKeyboardFocus();
+
+ panel->setSelection(
+ server_response["new_inventory_item"].asUUID(),
+ TAKE_FOCUS_NO);
+
+ // restore keyboard focus
+ gFocusMgr.setKeyboardFocus(focus);
+ }
+ }
+ else
+ {
+ LL_WARNS() << "Can't find a folder to put it in" << LL_ENDL;
+ }
+
+ // remove the "Uploading..." message
+ LLUploadDialog::modalUploadFinished();
+
+ // Let the Snapshot floater know we have finished uploading a snapshot to inventory.
+ LLFloater* floater_snapshot = LLFloaterReg::findInstance("snapshot");
+ if (asset_type == LLAssetType::AT_TEXTURE && floater_snapshot)
+ {
+ floater_snapshot->notify(LLSD().with("set-finished", LLSD().with("ok", success).with("msg", "inventory")));
+ }
+}
diff --git a/indra/newview/llpostcard.cpp b/indra/newview/llpostcard.cpp
index 4e34ec912e..2e639b56eb 100755
--- a/indra/newview/llpostcard.cpp
+++ b/indra/newview/llpostcard.cpp
@@ -36,7 +36,6 @@
#include "llagent.h"
#include "llassetstorage.h"
-#include "llassetuploadresponders.h"
#include "llviewerassetupload.h"
///////////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp
index 2604eb1840..ff9a70d05c 100755
--- a/indra/newview/llpreviewgesture.cpp
+++ b/indra/newview/llpreviewgesture.cpp
@@ -31,7 +31,6 @@
#include "llanimstatelabels.h"
#include "llanimationstates.h"
#include "llappviewer.h" // gVFS
-#include "llassetuploadresponders.h"
#include "llcheckboxctrl.h"
#include "llcombobox.h"
#include "lldatapacker.h"
diff --git a/indra/newview/llpreviewnotecard.cpp b/indra/newview/llpreviewnotecard.cpp
index 9273e06d65..2c609d902c 100755
--- a/indra/newview/llpreviewnotecard.cpp
+++ b/indra/newview/llpreviewnotecard.cpp
@@ -31,7 +31,6 @@
#include "llinventory.h"
#include "llagent.h"
-#include "llassetuploadresponders.h"
#include "lldraghandle.h"
#include "llviewerwindow.h"
#include "llbutton.h"
diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp
index 2f09214dd6..11a503e71f 100755
--- a/indra/newview/llpreviewscript.cpp
+++ b/indra/newview/llpreviewscript.cpp
@@ -29,7 +29,6 @@
#include "llpreviewscript.h"
#include "llassetstorage.h"
-#include "llassetuploadresponders.h"
#include "llbutton.h"
#include "llcheckboxctrl.h"
#include "llcombobox.h"
diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp
index 904fa7fcbe..782a27a846 100755
--- a/indra/newview/llviewermenufile.cpp
+++ b/indra/newview/llviewermenufile.cpp
@@ -65,7 +65,6 @@
#include "llviewerassetupload.h"
// linden libraries
-#include "llassetuploadresponders.h"
#include "lleconomy.h"
#include "llhttpclient.h"
#include "llnotificationsutil.h"
diff --git a/indra/newview/llviewermenufile.h b/indra/newview/llviewermenufile.h
index 0f8fa56b52..6941b4dc0e 100755
--- a/indra/newview/llviewermenufile.h
+++ b/indra/newview/llviewermenufile.h
@@ -70,16 +70,6 @@ void assign_defaults_and_show_upload_message(
const std::string& display_name,
std::string& description);
-void on_new_single_inventory_upload_complete(
- LLAssetType::EType asset_type,
- LLInventoryType::EType inventory_type,
- const std::string inventory_type_string,
- const LLUUID& item_folder_id,
- const std::string& item_name,
- const std::string& item_description,
- const LLSD& server_response,
- S32 upload_price);
-
class LLFilePickerThread : public LLThread
{ //multi-threaded file picker (runs system specific file picker in background and calls "notify" from main thread)
public: